专利名称:一种工作流管理系统流程权限控制系统及其实现方法
技术领域:
本发明属于工作流管理系统软件中间件技术领域,具体地说是一种工作流管理系统流程权限控制系统及其实现方法。
背景技术:
随着电子商务的兴起,以各种各样的门户站点为基础的网上交易在持续快速发展,网上交易是20世纪最主要的技术成就之一,极大地带动了21世纪商业领域的变革。
工作流管理系统(WFMS,Workflow Management System)是计算机软件领域中一种中间件技术,广泛应用于办公自动化、电子政务、电子商务等业务系统中,通过工作流管理系统,企业的业务流程将得到极大的自动化,企业的运行效率将得到极大的提高。目前很多通用或专用的工作流管理系统在流程管理的灵活性和可视化设计方面已经做得很好,特别是随着一些国际标准组织推出的了一系列标准,如工作流管理联盟(WFMC)制定的XML过程定义语言XPDL(XMLProcess Definition Language)、商业处理管理(BPMI,Business ProcessManagement Initiative)组织提出的商业处理建模语言(BPML,BusinessProcess Model Language)、IBM,Bea,Microsoft,SAP,Siebel等公司联合推出的Web服务商业流程执行语言BPEL4WS(Business Process ExecutionLanguage for Web Services)等。这些流程规范和标准的推出和普遍支持,工作流管理系统也逐步发展和成熟起来,成为中间件领域非常重要的一个软件分支领域。
工作流管理系统一般涉及到6个基本模块,各模块之间具有工作流接口
(1)过程定义工具模块。为用户提供一种对实际业务过程进行分析、建模的手段,并生成业务过程的可被计算机处理的形式化描述,通常称作流程模板。
(2)工作流执行服务模块。它借助于一个或多个工作流机或工作流引擎,激活并解释过程定义的全部或部分,并同外部的应用程序进行交互,完成工作流过程实例的创建、执行与管理,为工作流程的运行提供一个运行环境。
(3)管理及监控工具模块。其功能是对工作流管理系统中过程实例的状态进行监控与管理,如用户管理、角色管理、审计管理、资源控制等。
(4)客户应用程序模块。它给用户提供一种手段以处理过程实例运行过程中需要者干预的任务。每一个这样的任务就被称为一个工作项。工作流为每一个用户维护一个工作项列表,它表示当前需要该用户处理的所有任务。
(5)被调应用程序模块。指工作流执行服务在过程实例的运行过程中调用的、用以对应用数据进行处理的程序模块。在过程定义中包含这种应用程序的详细信息,如类型、地址等。
(6)其他工作流执行服务模块。工作流可能需要多个工作流引擎共同完成,甚至需要其他异质的工作流执行服务来辅助来完成,这涉及到工作流管理系统之间的互联。
在面向交互的协作型业务系统中,由于业务流程的复杂性或人为因素的随意性,流程设置和流程管理的技术难度很大。一方面,工作流管理系统应能随着业务的变化灵活地进行调整,需要系统有很高的灵活性。另一方面,在灵活性的同时又要有比较严谨的流程控制机制,特别是在安全性、保密性要求比较高的业务领域,用户对流程控制的细致、严谨性要求很高,这就对工作流管理系统的权限模型和流程控制机制提出了很高的要求。现在的不少工作流管理系统需要通过比较复杂的配置才能满足这种要求,有些系统是通过针对某个行业特点把一些控制机制固化在系统中,这就会带来灵活性方面的局限性,从而导致业务规则发生变化时,需要对系统进行修改,给系统维护带来很大的困难。
发明内容
为了克服现有技术的不足,本发明的目的在于提供一种工作流管理系统流程权限控制系统及其实现方法,解决现有技术在流程权限控制方面存在的灵活性不足和不严谨问题,提高流程授权控制的灵活性和严谨性。
为完成本发明的发明目的的本发明采取的总体技术方案为一种工作流管理系统流程权限控制系统,包括工作流执行服务模块、工作流设计模块、工作流管理与监控模块以及工作流接口,工作流管理与监控模块中包括有角色管理模块,其特征在于所述角色管理模块还包括有动态角色管理模块,动态角色管理模块包括流程启动者角色子模块、流程管理者角色子模块、流程交办者角色子模块、流程操作者角色子模块,分别用于管理流程启动者角色、流程管理者角色、流程交办者角色和流程操作者角色,所述工作流设计模块分别与所述的各动态角色子模块相联接,用于调用这些角色子模块完成流程模板的设计,所述工作流执行服务模块分别与所述的动态角色子模块相连接,用于调用这些角色子模块实现根据工作流程执行情况动态设置和管理流程的执行和操作权限。
一种工作流管理系统流程权限控制的实现方法,包括以下步骤步骤1、工作流执行服务模块接受客户端的流程请求,并判断流程请求的类型;步骤2、当流程请求是启动新流程时,设置流程启动者角色和流程管理者角色;步骤3、当流程请求是提交当前流程任务时,调用相应的动态角色子模块,设定下一环节的流程执行者;步骤4、当流程请求是获取流程操作权限时,调用动态角色管理模块,流程启动者角色子模块、流程管理者角色子模块、流程交办者角色子模块、流程操作者角色子模块获取指定的流程启动者角色、流程管理者角色、流程交办者角色和流程操作者角色有权使用的流程操作;步骤5、将指定了操作权限的流程操作结果合并,并根据流程操作结果将流程操作权限赋予当前用户。
所述步骤2具体是指当流程请求是启动新流程时,工作流执行服务模块根据当前用户自动设置流程启动者角色,并根据工作流程设计模板中设定的流程管理员设置流程管理者角色。
所述步骤2中的流程启动者角色子模块用于根据某个流程实例的启动者信息来决定用户是否是流程启动者角色,并根据设置的流程权限设定流程任务执行者和流程操作权限。
所述步骤2中的流程管理者角色子模块用于对流程实例的管理者角色进行管理,流程管理者角色能对流程任务进行控制分派、终止、跳转等处理操作。
所述步骤3进一步包括以下步骤步骤31、提交当前流程任务;步骤32、根据流程模板中设置的静态角色和动态角色,分别调用相应的静态和动态角色子模块,设定下一环节的流程执行者;步骤33、将当前用户的操作信息存入内存数据库中。
所述步骤32进一步包括以下步骤步骤321、判断当前用户是否为流程任务执行者;步骤322、当当前用户不是流程执行者时,检查当前用户是否为流程启动者、管理者、操作者或交办者角色,如果都不是,则出错结束;步骤323、当当前用户是流程执行者时,则将当前任务结束,执行到下一节点,根据下一节点设置的静态角色和动态角色找到对应的用户,并将这些用户设置为下一个任务的执行者。
所述步骤4进一步包括以下步骤步骤41、调用静态角色管理模块,获取指定的静态角色有权使用的流程操作,并将结果存储在内存数据库的结果集中;
步骤42、调用动态角色的各子模块,流程启动者角色子模块、流程管理者角色子模块、流程交办者角色子模块、流程操作者角色子模块获取指定的流程启动者角色、流程管理者角色、流程交办者角色和流程操作者角色有权使用的流程操作,并将结果存储在内存数据库的结果集中;所述步骤41之前还包括以下步骤步骤411、获取当前工作任务;步骤412、当当前用户为流程任务执行者,获取配置在当前任务的没有单独指定操作权限的流程操作,并将结果存储在内存数据库的结果集中。
所述步骤4中的流程交办者角色子模块用于管理流程实例的交办者角色,处理撤回、跟踪等业务处理操作。
所述步骤4中的流程操作者角色子模块用于管理流程实例的操作者角色,获取所有曾经参与某流程的用户,流程的不同环节有不同的操作用户,只有实际操作过的用户属于流程操作者角色。
所述步骤2、3和4都包括有根据动态角色的设置和判定向客户端返回流程请求结果的步骤。
本发明是针对目前工作流管理系统的流程权限控制机制方面存在的问题而提出的解决方案,通过设计和实现了一系列动态角色管理子模块,在流程权限的实现策略中,除了针对静态角色授权的策略外,增加了对流程环节和流程操作的动态角色授权机制。通过在原有工作流管理系统的权限模型基础上,实现了一种更灵活、更严谨的流程权限控制系统与方法,进一步完善了工作流管理系统的授权控制机制,可以更好地满足对业务安全性、严谨性要求比较高的单位如政府、安全部门等在办公自动化和业务管理中对工作流管理系统的要求,并且通过制定一套通用可定制的授权机制,而不是将授权机制固化在系统中,完全可以由用户在使用过程中进行配置和修改,在提高系统的严谨性和安全性的同时,提高了系统的适用性和灵活性。
图1为本发明的系统构成图;图2为本发明的角色和用户关系示意图;图3为本发明的权限和角色关系示意图;图4为本发明的主流程图;图5为本发明一个实例中获取流程交办者角色流程图;图6为本发明一个实施例中获取流程操作权限流程图。
具体实施例方式
下面结合说明书附图来说明本发明的具体实施方式
。
请参阅图1本发明的系统构成图。本发明是一种工作流管理系统流程权限控制系统,该系统在工作流系统普遍存在的工作流设计模块、工作流执行服务模块、工作流管理和监控模块基础上,扩展了动态角色管理模块,并细分为流程管理者角色子模块、流程启动者角色子模块、流程交办者角色子模块、流程操作者角色子模块。角色管理模块分为静态角色管理模块和动态角色管理模块,角色管理模块不但包括静态角色管理模块,还包括有动态角色管理模块,动态角色管理模块包括流程启动者角色子模块、流程管理者角色子模块、流程交办者角色子模块、流程操作者角色子模块,用于分别管理流程启动者角色、流程管理者角色、流程交办者角色和流程操作者角色,所述工作流设计模块分别于所述的各动态角色子模块相联接,用于调用这些角色子模块设计流程模板,所述工作流执行服务模块设置动态角色和管理各动态角色的执行和操作权限。
请参阅图2本发明的角色和用户关系图。本系统中的动态角色是相对目前工作流管理系统中常用的静态角色而言的。静态角色是系统配置管理中定义的不随流程变化而改变的角色,如公文收发者角色、机要管理者角色等,用户属于什么角色是需要在配置管理系统中进行设置的。动态角色指的是根据具体流程的执行情况而不断变化的角色,由系统自动根据流程的执行情况动态设置,本发明定义的动态角色有流程启动者角色、流程管理者角色、流程交办者角色、流程操作者角色。
(1)流程启动者角色。该角色是指针对某个流程实例而言发起当前流程的角色。比如起草一份公文进入系统的角色,该动态角色只和具体的公文和具体的流程实例相关,意义明确。流程启动者角色信息存储在流程实例的数据结构中,在对应的数据库表中增加一个字段代表该角色的用户。流程启动的时候,系统获取当前登录的用户信息,并将用户信息存储在流程实例的数据库的对应字段中。在需要访问流程启动者信息时,流程启动者角色管理子模块根据流程实例,从该流程实例的数据库记录中获取用户信息来得到流程启动者所对应的用户。
(2)流程管理者角色。该角色是指针对基于某个流程模板所启动的流程实例在流程模板里配置的管理者角色。对于某个流程实例来说,流程管理者角色可以在某个时刻主动对流程进行控制分派、终止、跳转等处理。流程管理者角色信息存储在流程实例的数据库表中,在对应的数据库表中增加一个字段代表该角色对应的用户。在流程创建的时候,系统获取流程模板表里的流程管理者信息,将该信息存储在流程实例的对应数据库字段中。在需要访问流程管理者信息时,流程管理者角色管理子模块根据流程实例,从该流程实例的数据库记录中获取用户信息来得到流程管理者所对应的用户。
(3)流程交办者角色。该角色是指针对当前流程节点而言上一个流程节点的执行者角色,也就是将该任务交付给当前处理者的角色。流程交办者角色在类似撤回、驳回等与当事者有关的业务中起着相当大的作用。和流程启动者角色、流程管理者角色不同的是,流程交办者角色比较复杂,它和流程实例的运行状态密切相关,在流程的不同状态下对应的是不同的用户。流程交办者信息是存储在流程的操作历史记录中。当流程任务提交时,系统自动记录当前用户的操作信息。在需要访问流程启动者信息时,流程交办者角色管理子模块从当前流程实例的操作历史记录中获取到最后的操作记录,根据该操作历史记录中的用户信息来得到流程交办者角色所对应的用户。
(4)流程操作者角色。它是指针对流程的某个环节进行实际操作的角色,不同的流程环节有不同的操作角色,只有实际操作过的用户才属于流程操作者角色,主要用于需要获取所有曾经参与过该流程的角色。和流程交办者比较类似,流程操作者角色也比较复杂,它和流程实例的运行状态密切相关,在流程的不同状态下对应的是不同的用户。流程操作者信息是存储在流程的操作历史记录中。当流程任务提交时,系统自动记录当前用户的操作信息。在需要访问流程操作者信息时,流程操作者角色管理子模块会从当前流程实例的操作历史记录中获取到所有的操作记录,根据这些操作历史记录中的用户信息来得到流程操作者角色所对应的用户。
请参阅图3本发明的权限模块示意图,本发明的权限控制主要包括下述权限(1)流程模板设计权限有该权限的角色所对应的用户能够设计流程模板;(2)流程模板使用权限只有有该权限的角色所对应的用户才能利用这个模板启动流程;(3)流程活动执行权限在流程活动节点上预设置的执行角色,只有有执行权限的角色所对应的用户才有可能被指定为流程任务的执行者,执行权限可以授予静态角色也可以授予动态角色。
(4)流程操作权限在流程活动节点上用户可以执行的业务操作的权限,用于控制在同一个环节中,不同的用户可以使用不同的流程操作,该权限可以授予静态角色也可以授予动态角色。比如在审批节点上,有审批通过和撤回两个操作,审批通过应该是领导可能做的操作,而撤回应该是上一个活动节点送审的人可能做的操作,因此在领导的用户界面上应只能看见“审批通过”的按钮,不能看见“撤回”的按钮,而上一个活动节点送审的人只能看见“撤回”的按钮,不能看见“审批通过”的按钮,正常情况下,领导是配置在审批节点上的执行者,所以不需要授权,而上一个节点的人对审批活动理论上是没有权限的,但业务上是存在这种需求,因此可以将撤回这个操作授权给流程交办者角色这个动态角色。
请参阅图4,本发明的主流程图,一种工作流管理系统流程权限控制的实现方法,首先,在流程设计时,通过流程设计模块将流程任务执行者和流程操作的权限授予各个动态角色,设置的信息保存在流程模板中,并将流程模板信息存储在内存的数据库中。
然后,工作流执行服务模块接受客户端的流程请求,并判断流程请求的类型,如果流程请求是启动新流程,工作流执行服务模块则根据当前用户自动设置流程启动者角色,并根据工作流程设计模板中设定的流程管理员设置流程管理者角色。
当流程请求是提交当前流程任务时,调用相应的动态角色子模块,设定下一环节的流程执行者。其具体过程是提交当前流程任务;判断当前用户是否为流程任务执行者,当当前用户不是流程执行者时,检查当前用户是否为流程启动者、管理者、操作者或交办者角色,如果都不是,则出错结束,当当前用户是流程执行者时,则将当前任务结束,执行到下一节点,根据下一节点设置的静态角色和动态角色找到对应的用户,并将这些用户设置为下一个任务的执行者。
将当前用户的操作信息存入内存数据库中。
之后,当流程请求是获取流程操作权限时,首先获取当前工作任务,如果当当前用户为流程任务执行者,则获取配置在当前任务的没有单独指定操作权限的流程操作,并将结果存储在内存数据库的结果集中,调用静态角色管理模块,获取指定的静态角色有权使用的流程操作,并将结果存储在内存数据库的结果集中;在调用动态角色的各子模块,流程启动者角色子模块、流程管理者角色子模块、流程交办者角色子模块、流程操作者角色子模块获取指定的流程启动者角色、流程管理者角色、流程交办者角色和流程操作者角色有权使用的流程操作,并将结果存储在内存数据库的结果集中。
最后,将指定了操作权限的流程操作结果合并,并根据结果集中的数据将流程操作权限赋予用户。
请参阅图5本发明实施例中获取流程交办者角色流程图。工作流执行服务模块或客户应用程序要得到当前的流程交办者角色所对应的用户,就需要向流程交办者角色管理子模块发请求。对于当前流程实例的流程交办者而言,正等待处理的工作流程任务不存在,因此流程交办者角色子模块首先必须从活动状态表中获取当前流程实例正在执行的活动,也就是当前流程状态,并据此获取当前正在执行的工作任务,查到最后一个工作任务的流程操作历史记录,从该流程操作历史信息中就可以得到流程交办者角色所对应的用户。
请参阅图6本发明一个流程实例中获取流程操作的流程图。获取流程操作的步骤如下首先,工作流执行服务模块判断当前用户对于选择的公文是否有工作任务,如果有工作任务,代表该公文对应的流程实例正在运行,则获取配置在当前任务活动节点上配置的所有没有单独授权的流程操作,将得到的结果存储在内存中的结果集中。接着,调用静态角色管理模块,得到用户所属的静态角色被授予权限的流程操作,并将结果合并到上一步的结果集中,然后,依次调用动态角色管理模块的流程启动者角色管理子模块、流程管理者角色管理子模块、流程交办者角色管理子模块、流程操作者角色管理子模块,如果用户属于动态角色所对应的用户,则获取授权给该动态角色的流程操作,并将结果合并到上一步的结果集中。最后将结果返回给调用端。
如果没有工作任务,则检查是否有公文对应的正在运行的流程实例,如果没有公文对应的正在运行的流程实例,则获取配置在当前任务活动节点上的无流程状态以及公文无关的流程操作,将结果返回给调用端。
如果有公文对应的正在运行的流程实例,则获取当前流程实例正在执行的工作任务,接着,获取在该节点上的与流程状态无关的流程操作,然后,依次调用动态角色管理模块的流程启动者角色管理子模块、流程管理者角色管理子模块、流程交办者角色管理子模块、流程操作者角色管理子模块,如果用户属于动态角色所对应的用户,则获取该动态角色有权处理的流程操作,并将结果合并到上一步的结果集中。最后将结果返回给调用端。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术者来说,本发明可以有各种更改和变化,比如动态角色的名称可以改用其他名称,但含义相同或相似。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。
权利要求
1.一种工作流管理系统流程权限控制系统,包括工作流执行服务模块、工作流设计模块、工作流管理与监控模块以及工作流接口,工作流管理与监控模块中包括有角色管理模块,其特征在于所述角色管理模块还包括有动态角色管理模块,动态角色管理模块包括流程启动者角色子模块、流程管理者角色子模块、流程交办者角色子模块、流程操作者角色子模块,分别用于管理流程启动者角色、流程管理者角色、流程交办者角色和流程操作者角色,所述工作流设计模块分别与所述的各动态角色子模块相连接,用于调用这些角色子模块完成流程模板的设计,所述工作流执行服务模块分别与所述的动态角色子模块相连接,用于调用这些角色子模块实现根据工作流程执行情况动态设置和管理流程的执行和操作权限。
2.一种工作流管理系统流程权限控制的实现方法,其特征在于,该方法包括以下步骤步骤1、工作流执行服务模块接受客户端的流程请求,并判断流程请求的类型;步骤2、当流程请求是启动新流程时,设置流程启动者角色和流程管理者角色;步骤3、当流程请求是提交当前流程任务时,调用相应的动态角色子模块,设定下一环节的流程执行者;步骤4、当流程请求是获取流程操作权限时,调用动态角色管理模块,流程启动者角色子模块、流程管理者角色子模块、流程交办者角色子模块、流程操作者角色子模块获取指定的流程启动者角色、流程管理者角色、流程交办者角色和流程操作者角色有权使用的流程操作;步骤5、将指定了操作权限的流程操作结果合并,并将流程操作权限赋予当前用户。
3.根据权利要求2所述的工作流管理系统流程权限控制方法,其特征在于所述步骤2具体是指当流程请求是启动新流程时,工作流执行服务模块根据当前用户自动设置流程启动者角色,并根据工作流程设计模板中设定的流程管理员设置流程管理者角色。
4.根据权利要求2所述的工作流管理系统流程权限控制方法,其特征在于所述步骤2中的流程启动者角色子模块用于根据某个流程实例的启动者信息来决定用户是否是流程启动者角色,并根据设置的流程权限设定流程任务执行者和流程操作权限。
5.根据权利要求2所述的工作流管理系统流程权限控制方法,其特征在于所述步骤2中的流程管理者角色子模块用于对流程实例的管理者角色进行管理,流程管理者角色能对流程任务进行控制分派、终止、跳转等处理操作。
6.根据权利要求2所述的工作流管理系统流程权限控制方法,其特征在于所述步骤3进一步包括以下步骤步骤31、提交当前流程任务;步骤32、根据流程模板中设置的静态角色和动态角色,分别调用相应的静态和动态角色子模块,设定下一环节的流程执行者;步骤33、将当前用户的操作信息存入内存数据库中。
7.根据权利要求6所述的工作流管理系统流程权限控制方法,其特征在于所述步骤32进一步包括以下步骤步骤321、判断当前用户是否为流程任务执行者;步骤322、当当前用户不是流程执行者时,检查当前用户是否为流程启动者、管理者、操作者或交办者角色,如果都不是,则出错结束;步骤323、当当前用户是流程执行者时,则将当前任务结束,执行到下一节点,根据下一节点设置的静态角色和动态角色找到对应的用户,并将这些用户设置为下一个任务的执行者。
8.根据权利要求2所述的工作流管理系统流程权限控制方法,其特征在于所述步骤4进一步包括以下步骤步骤41、调用静态角色管理模块,获取指定的静态角色有权使用的流程操作,并将结果存储在内存数据库的结果集中;步骤42、调用动态角色的各子模块,流程启动者角色子模块、流程管理者角色子模块、流程交办者角色子模块、流程操作者角色子模块获取指定的流程启动者角色、流程管理者角色、流程交办者角色和流程操作者角色有权使用的流程操作,并将结果存储在内存数据库的结果集中。
9.根据权利要求8所述的工作流管理系统流程权限控制方法,其特征在于所述步骤41之前还包括以下步骤步骤411、获取当前工作任务;步骤412、当当前用户为流程任务执行者,获取配置在当前任务的没有单独指定操作权限的流程操作,并将结果存储在内存数据库的结果集中。
10.根据权利要求2所述的工作流管理系统流程权限控制方法,其特征在于所述步骤4中的流程交办者角色子模块用于管理流程实例的交办者角色,处理撤回、跟踪等业务处理操作。
11.根据权利要求2所述的工作流管理系统流程权限控制方法,其特征在于所述步骤4中的流程操作者角色子模块用于管理流程实例的操作者角色,获取所有曾经参与某流程的用户,流程的不同环节有不同的操作用户,只有实际操作过的用户属于流程操作者角色。
12.根据权利要求2所述的工作流管理系统流程权限控制方法,其特征在于所述步骤2、3和4都包括有根据动态角色的设置和判定向客户端返回流程请求结果的步骤。
全文摘要
一种工作流管理系统流程权限控制系统,角色管理模块包括动态角色管理模块,动态角色管理模块包括用于管理流程启动者角色、流程管理者角色、流程交办者角色和流程操作者角色的角色子模块。工作流执行服务模块接受客户端的流程请求;当流程请求是启动新流程时,设置流程启动者角色和流程管理者角色;当流程请求是提交当前流程任务时,调用相应的动态角色子模块,设定下一环节的流程执行者;当流程请求是获取流程操作权限时,调用动态角色管理各子模块获取指定的各个角色有权使用的流程操作;将指定了操作权限的流程操作结果合并,并根据结果集中的数据将流程操作权限赋予用户。通过调用这些动态角色模块控制流程授权机制,使流程权限控制更灵活、更严谨。
文档编号G06Q10/00GK101038635SQ20061005983
公开日2007年9月19日 申请日期2006年3月15日 优先权日2006年3月15日
发明者熊开宏, 李海华, 陈健丁 申请人:北大方正集团有限公司, 北京大学, 北京北大方正技术研究院有限公司