一种业务系统与工做流系统数据交换的方式

一种业务系统与工做流系统数据交换的方式web

工做流系统做为业务系统的业务流程驱动支撑,提供必要的工做流基本功能,如任务提交,撤回,挂起,终止,获取待办事项,路由计算等等。除此以外,还提供流程图设计,参与人指定等流程定义功能。以上工做不可避免地用到业务系统的数据,好比根据业务数据(借款单)的数据进行路由判断,计算审核人等。工做流引擎如何获取业务系统的数据呢?sql

独立的工做流系统
一个设计良好的工做流系统应该是和业务系统的低耦合的,是独立于业务系统的。所以要定义双方的数据交换协议和规则。数据库

独立的含义是,一方面要提供标准或默认的流程设计界面,好比路由条件定义界面,参与人(审核人)指定条件。另外一方面在须要时,能够根据约定的协议和规则访问业务系统的数据。
协议的类型有不少种,web服务,RPC,文件系统,比较实用并简单的是数据库访问协议。直白讲就是让工做流系统直接访问业务系统的数据库,约定数据库表的格式。并经过自定义函数和流程变量来增长系统的易用性,使得直接用户能够定义工做流。编程

流程变量和函数
流程变量和函数同编程语言中的变量相似,稍有不一样的是这里的变量会对应一段计算逻辑。这个计算逻辑多是一段SQL语句,Java代码。
函数有参数,同变量相似,也有一段代码,不一样的是,函数有参数,变量没有。变量的值和函数由流程引擎负责解释。在实战中,实施人员定义流程变量和函数,屏蔽数据复杂性,用户使用函数和变量定义路由逻辑和参与者逻辑。在实际中,流程变量通常用来存放单据上的数据项,函数能够用来计算流程参与者。
记录类型的流程变量
考虑到流程变量的值大多来自某个表的同一条记录,咱们能够设计一种叫“记录”的结构(数据类型),记录的每一个成员能够对应表的某个列。具体实现时,一个sql语句,就能够把全部的成员(列)的值取过来,这样能够提升系统的性能。app

流程变量和函数的做用域
变量和函数分两个做用范围:系统级和流程级。前者在全部流程中均可使用,后者只能在定义它的流程中使用。编程语言

内置变量
流程系统有几个内置变量,交易号,业务系统ID。前者用来得到业务系统的交易实例数据,计算流程变量时使用。交易号的例子:单据号。业务系统ID用来区分不一样的外部业务系统,由于流程系统是独立的,能够同时为多个外部系统提供工做流服务,有必要经过业务系统id进行区分。
业务系统在调用工做流服务时,必须传入这两个变量的值。编辑器

变量和函数的属性
变量的属性有:类型,计算逻辑,变量说明。类型能够是简单类型,如字符串,数字,也能够是业务类型,如借款单号,员工号。
函数的属性:函数名,返回值类型,参数,逻辑。
函数参数的属性:数据类型。
定义数据类型的目的有两个,一是在定义路由表达式或参与者表达式时根据类型匹配变量,提升易用性,二是能够作表达式校验。函数

下面是流程变量的例子:性能

做用范围  变量名称 变量类型 变量说明 计算逻辑
流程 申请人工号 工号 借款单申请人编号。 select app_emp from hr_loan_request where req_id = :tran_id
流程 申请金额   数字 借款申请金额。 select app_amount from hr_loan_request where req_id = :tran_id
系统 交易ID  字符串 内置变量,流程实例关联的业务系统交易号。 业务系统在启用流程时传入 
系统 系统ID 字符串 内置变量,业务系统的代号。当工做流系统独立部署时,用于区分服务的业务系统。  业务系统在启用流程时传入,不可修改
系统 用户ID 字符串 内置变量 业务系统在启用流程时传入,不可修改
         
         

 

 

 

 

 

 

 

流程函数的例子spa

流程函数的例子
做用范围 函数名称 返回值类型 函数说明 计算逻辑
流程 biz_role user 根据传入的业务角色名称和组织机构,返回用户编号,以逗号分隔 select user_no from hr_pr_biz_role where role_name =:p_rolename and org= :p_org
         
         
         

变量和函数定义
流程系统提供变量和函数定义功能,该功能的使用对象是实施人员。这是工做流系统的标准功能。在这个功能里,提供可视化的界面,供实施人员定义变量和函数,以及其属性。
变量和函数的逻辑支持多种,好比SQL,webService,RPC,程序集内部调用等等。咱们能够先实现最简单的:SQL。

定义路由条件和参与者条件
工做流引擎另一个比较重要的功能就是定义路由条件,和参与者表达式。
路由条件定义在“边”上,决定流程的走向。路由条件是个逻辑表达式(logical-exp),它的返回时是 true 或者 false;
参与者表达式用来运算某个节点上的活动(activity)由谁参与,参与者表达式的结果是用户集合或者角色集合。流程引擎根据运算结果,生成用户的待办任务,业务系统经过工做流接口取得某个用户的待办任务。
工做流系统提供可视化的定义界面。不管是路由条件仍是参与者表达式,都只能是使用流程变量和函数做为表达式项。系统能够提供表达式编辑器,函数表达式编辑器,流程变量和函数枚举界面,提升易用性。
这个功能的目标用户是直接用户和实施人员。

表达式解析和函数运算表达式的项除了流程变量就是流程函数,解析天然不成为问题,求值也是毛毛雨了。

相关文章
相关标签/搜索