基于动态语言与事件处理机制的工作流引擎实现方法与流程

文档序号:12008120阅读:190来源:国知局
基于动态语言与事件处理机制的工作流引擎实现方法与流程
本发明属于计算机系统平台技术领域,特别是提供了一种基于动态语言与事件处理机制的工作流引擎实现方法;解决多系统下业务流程集成的工作流实现。

背景技术:
随着市场竞争加剧,现在越来越多的企业采用工作流方式来提高工作效率,降低人力成本。以钢铁企业的订单评审流程为例,销售人员在接收用户询单、意向订单、进行订单质量评审、财务评审的过程是一个繁琐过程,需要针对不同用户的特点对订单进行针对性的质量设计,需要对产能、生产计划、成本进行合理的评估来确定是否能生产、如何高效低成本地生产、何时能交付给用户等。这就需要平台提供一个好的工作流引擎来整合分布在不同业务系统的子流程与功能,通过实现复杂流程任务调度、节点路由控制,比如分支、合并等;实现对业务流程的高效、便捷、透明的管控;同时实现对个性化业务流程建模、动态部署与发布实现快速响应流程变更需求、跟踪业务处理过程。而传统的工作流引擎通常是分别嵌入在不同业务系统,通过固化代码来绑定业务流程的,这种方式开发工作量大、成本高、系统之间集成复杂,可扩展性差,并且不利于企业的流程再造与个性化流程配置。当业务流程方式变化时候,需要对参与到工作流的各个系统功能进行修改,改动可能是颠覆性的,很难快速支持业务流程的持续优化带来的业务变化。

技术实现要素:
本发明的目的在于提供一种基于动态语言与事件处理机制的工作流引擎实现方法。通过规则配置与事件交互方式将业务流程与技术组件解耦,从而实现用户根据业务流程变化和个性化需求自主定义工作流,然后动态部署发布实现快速响应用户需求的目的,解决传统工作流处理方式业务业务硬编码固化、维护和扩展困难的问题。本发明采用事件机制与业务应用界面、后台业务组件采用低耦合方式进行交互,主引擎装载动态配置的工作流程定义生成控制数据与工作流实例数据,结合业务事件进行任务流转与动态调度,其调度规则采用业务规则语言进行动态配置,可以根据业务变化进行实时调整;事件处理机制通过同步、异步消息方式与后台组件进行交互,将技术实现与业务分离出来,有效的解决了传统工作流引擎需要采用固化代码绑定业务的弊端,真正的实现了业务流程与技术的高效、一体化集成。包括下列步骤:1、工作流建模:通过流程建模工具,采用图形化界面方式实现用户工作流程自定义,关联用户角色组织、组件库、事件库,最后生成工作流定义元数据。工作流元数据包括工作流名称、路由节点、每个节点的跳转规则、节点下的执行任务。2、工作流注册:采用元数据管理器对工作流定义进行注册,定义工作流下的每个节点的启动、路由事件,事件包括启动响应事件、采用动态规则语言描述的响应条件,最后注册到事件管理器中。另外,对每个节点下的执行任务在统一用户管理模块中进行授权操作。3、工作流事件监听:工作流定义元数据注册后,由工作流主引擎装载定义数据,并根据配置的启动、路由事件,对事件进行监听。工作流主引擎是驱动流程流动的主要部件,负责解释工作流流程定义,创建并初始化流程实例,控制流程流动的路径,记录流程运行状态,挂起或唤醒流程,终止正在运行的流程,与分布在不同应用的组件进行通讯。4、工作流启动事件触发:当用户界面发起工作流启动事件后,首先,事件管理器接受到事件,事件管理器将业务请求元数据放入应用请求上下文Context中,发布给各个事件监听器。工作流主引擎响应启动事件,根据参与用户角色、传入的请求上下文、与条件表达式,判断触发条件是否满足,如果满足,那么启动工作流实例。5、工作流步骤流转控制:工作流启动后,工作流主引擎根据工作流定义数据与上下文数据创建工作流实例与工作流控制数据。其中,工作流实例保存了工作流每一步骤流转的执行状态、与上下文数据,用于标识某个业务对象的流程执行状况;工作流控制数据用于保存用于控制工作流流转的数据,包括下一步执行任务、参与角色、路径节点、与路由规则。6、工作流与后台组件通讯:工作流在某个节点流转后,由工作流主引擎根据工作流控制数据的路由事件组件配置,对业务组件管理器发起事件请求组件调用,处理后台业务逻辑。调用方式通过事件驱动方式进行交互。在响应某个事件进行组件调用支持本地调用方式与基于webservice的远程调用方式。7、工作流任务调度:工作流流转结束后,工作流主引擎根据工作流控制数据,计算出到达下一步需执行的任务与参与者,装配成任务列表通知给前台任务通知界面。前台任务界面根据参与用户角色显示出某个参与者须执行的任务。任务数据包括了任务名称、任务绑定的事件号、任务绑定的业务对象标识、与任务绑定的处理界面链接。8、工作流审批事件触发:当流程参与用户,在任务通知界面点击某一条任务后,任务通知界面根据任务绑定的处理界面链接到业务处理界面中,供用户进行相应的事务处理,完毕后,前台发起该任务的流转事件到事件管理器,触发工作流向下一步流转,转到步骤5,直至工作流处理结束,转入步骤8。9、工作流结束:工作流结束后,系统更改工作流实例状态为已完成,任务列表为空,表示不存在一下执行任务。其中,步骤1所述的流程建模工具在定义时至少要配置流程业务分类、流程类型、工作流任务事件、步骤节点、步骤下可执行任务、路由节点、以及路由条件、步骤进入、任务退出的调用脚本或者业务组件事件。其中业务分类、流程类型绑定为某一个业务分类下的领域对象业务处理流程,主要是满足用户的个性化流程配置,比如:在钢铁行业的订单评审流程中,业务分类按产品分类来分、而流程类型指的是领域对象销售订单,不同的产品分类的销售订单评审流程是不一样的;启动条件、与路由条件采用动态执行语言EXPR来进行配置。采用的EXPR动态执行语言为自主定义的动态解析规则语言,是对内存中Context上下文数据进行动态解析与执行的表达式,包括:1、算术表示:指基本的加减乘除{+,-,*,/}、函数运算,数学函数如CEIL/FLOOR/ROUND/MIN/MAX,以及其他自定义函数。2、逻辑表示:指比较运算符{>,<,<>,=,>=,<=},与逻辑运算符{AND,OR}3、取值表达式:指从Context上下文中获取参数的表达式,参数值以目录方式在Context进行存取,比如:\SOI\THICKNESS.MID表示从SOI子目录中取出厚度THICKNESS参数,并取其均值。步骤2所述的采用动态规则语言描述的响应条件,是指采用EXPR动态执行语言来定义工作流节点任务的事件响应条件,与流程时候执行的上下文数据到工作流实例数据存储规则。其中,任务事件配置如下例所示:<actionid="101"name="创建审核"event="EVT_SOI_AUDIT_CREATE{entry=soi}[soi\sa\perStateId='STA_SOI_REQ_CREATED']">这里,我们定义了创建审核任务的响应事件、入口对象、与触发条件,表示当EVT_SOI_AUDIT_CREATE发生后,且请求上下文的业务对象为soi时候,判断soi下的审核对象sa的前状态是否是'STA_SOI_REQ_CREATED‘,如果是那么触发该任务。任务流转事件的数据存储规则,如下例所示:<post-functions>表示流转后触发的后台处理<functiontype="txnExec">PRCS_SOI_MD_MATCH</function>表示触发PRCS_SOI_MD_MATCH事件调用后来业务组件。<functiontype="EXPR">#SETsoi\soiStatus='STA_SOI_REQ_WT_CONFIRM';设置soi的状态为“待审核”#NGETsoi\eq\eqId;判断上下文soi下的eq对象下的eqId,如果不为空,那么写进工作 流实例中</function></post-functions>本发明的有益效果:本发明采用动态规则语言动态配置路由规则,并绑定事件机制与业务应用界面、后台业务组件低耦合方式交互,有效的解决了传统工作流引擎需要采用固化代码绑定业务的弊端,真正的实现了业务流程与技术的高效、一体化集成。目前该引擎实现方法已经应用于多个大型项目的流程管理功能中,总体来说,实现了业务流程的灵活配置、基于事件的活动管理、过程跟踪、自动跳转规则与任务提示功能,简化了繁重的编码定制开发任务。业务上通过灵活配置业务流程提升了业务组织部门的协同协调工作效率。维护上,在流程发生变化时候,只需要对流程文件进行修改即可,减轻了繁重的开发任务。具体的效果如下:1、可按权限的进行流程定制,满足面向不同业务的个性化配置2、可按用户权限的工作流任务协同,不同的角色的用户按照工作流流程定义完成不同工作业务规则嵌入式流转机制,自动流转到待完成的任务中提示给相关角色的人进行处理。3、跟踪业务流程的处理历史步骤,便于对业务处理过程进行追踪。附图说明图1为本发明具体实施方式的工作流引擎结构示意图。图2为本发明具体实施方式的工作流引擎活动示意图。具体实施方式本发明提出了一种基于动态语言与事件处理机制的工作流引擎实现方法,采用动态规则语言动态配置路由规则,并绑定事件机制与业务应用界面、后台业务组件低耦合方式交互,有效的解决了传统工作流引擎需要采用固化代码绑定业务的弊端,真正的实现了业务流程与技术的高效、一体化集成。下面结合附图和实例详细说明,该发明方法在应用实施过程中,包括两个具体的过程,一是基于工作流定义工具的流程配置过程,另外一个是在运行过程中,由工作流引擎进行权限校验、任务调度、工作流实例控制过程。在流程配置过程中,主要借助流程建模工具来定义工作流元数据,一个工作流元数据包括流程业务分类、流程类型、工作流任务事件、步骤节点、步骤下可执行任务、路由节点、以及路由条件、条件满足后需执行的业务组件等信息。具体的配置过程如下:1、业务流程配置:配置所属的业务类型、与流程类型,流程类型为领域模型中标识某一个业务对象的名称。比如:在钢铁行业的订单评审流程中,业务分类按产品分类来分、而流程类型指的是领域对象销售订单,不同的产品分类的销 售订单评审流程是不一样的。2、启动事件配置:配置该流程的启动事件、启动条件、授权的角色或组织。其中启动条件采用规则表达式EXPR来配置。规则表达式可以访问到目前业务流程的主体对象属性,通过判断某些属性满足一定条件后启动工作流,或者在工作流重复启动时候,提示验证错误。3、步骤节点配置:将参与该流程的活动作为一个步骤节点增加到工作流中,设定每一个步骤节点下的需处理的任务,比如审批任务。4、配置任务事件:将任务执行融于到事件处理机制中,定义任务启动事件、入口对象数据上下文、流转条件、参与者角色,下一路由节点,另外,可在进入某个步骤事件,或者离开某个步骤事件中配置规则表达式脚本来保存过程数据到工作流实例中、或者触发业务组件进行业务处理。如下例的创建审核任务事件配置:<actionid="101"name="创建审核"event="EVT_SOI_AUDIT_CREATE{entry=soi}[soi\sa\perStateId='STA_SOI_CREATED'"]role=”Sales”>上例表示创建审核任务与事件EVT_SOI_AUDIT_CREATE进行绑定,对象实例为soi,触发条件为soi\sa\perStateId='STA_SOI_CREATED',表示当目标业务对象soi的审核前状态为订单已创建时候,发起审核任务。5、配置分支路径:对于多参与者并行执行任务的情况,可以通过定义分支节点来实现。当某一个任务完成后,可以路由到定义的分支路径来分配多个节点给多个参与者。分支实际上是包括了多个节点的组合节点。6、配置合并节点:当多个分支任务都完成时候,需要同时进入某一个固定节点时候,可定义合并节点来实现,合并节点采用规则表达式定义合并条件。合并规则为参与到分支的每一个合并节点状态均为已完成后方可运行合并。工作流定义完成后,由平台的元数据发布模块,对工作流定义进行注册,注册过程采用动态部署方式实时生效。此时,工作流事件已经注册到事件管理器中,当前台发布业务事件,由工作流执行服务进行事件处理。处理过程如下:1、工作流启动事件:假定事件管理器接收到前台事件为工作流的启动事件,此时由事件管理将业务请求元数据放入应用请求上下文Context中,元数据至少包括业务类型、请求对象上下文,并调用工作流执行服务对请求事件进行处理。2、启动事件验证:工作流执行服务验证启动条件是否满足,该工作流实例是否已启动、与用户权限验证,如果验证失败,抛出验证错误信息到前台。否则,工作流执行服务调用工作流主引擎创建工作流实例。3、工作流实例创建:工作流主引擎按照业务分类、请求对象类型从元数据注册库中找到并装载工作流定义,根据定义创建控制数据,与工作流实例。控制数据是值路由路径与执行条件,工作流实例用来记录业务数据与历史路径信息。4、工作流任务调度:工作流主引擎根据控制数据,找到当前步骤上需执行的任务,组装任务到任务列表中,并根据当前参与者角色分发任务到参与者前台界面中。5、工作流任务通知:前台界面接收到后台任务队列后,刷新前台任务列表,参与者可以点击任务到操作界面进行下一步操作,或者选择工作流历史查看工作流创建、审批步骤信息。6、工作流审批事件:假定事件管理器接收到前台或者其他系统发布的审批消息事件,此时由事件管理将业务请求元数据放入应用请求上下文Context中,元数据至少包括业务类型、请求对象上下文,最后调用工作流执行服务进行流转处理。7、工作流步骤流转:工作流主引擎根据请求上下文的业务类型、业务对象标识、与事件匹配的任务号,检索工作流实例,可能是一个也以是多个,然后对工作流实例进行访问控制与条件验证,验证通过后,对工作流实例向下流转,如果该任务定义了离开事件,那么根据事件调用配置的表达式脚本、或者业务组件进行业务处理,完毕后,转入步骤4,直至工作流处理结束,转入步骤8。8、工作流结束:工作流结束后,系统更改工作流实例状态为已完成,任务列表为空,表示不存在一下执行任务。本发明实现了一种将业务流程与技术组件解耦的通用机制,供用户根据业务流程变化和个性化需求自主定义工作流,然后动态部署发布实现快速响应的目的,解决了传统工作流处理方式业务业务硬编码固化、维护和扩展困难的问题。实现了业务流程的灵活配置、活动管理、过程跟踪、自动跳转规则与任务提示功能,简化了繁重的编码定制开发任务。业务上通过灵活配置业务流程提升了业务组织部门的协同协调工作效率。维护上在流程发生变化时候,只需要对流程文件进行修改即可,减轻了繁重的开发任务。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1