Java工做流引擎节点接收人设置“按自定义SQL计算”系列讲解

关键字: 驰骋工做流程快速开发平台 工做流程管理系统 工做流引擎 asp.net工做流引擎 java工做流引擎. 开发者表单  拖拽式表单 工做流系统CCBPM节点访问规则接收人规则 java

适配数据库: oralce,mysql,sqlserver,Informix, PostgreSQL  达梦 mysql

接受人规则,就是为了解决下一步发送人的范围所制定的各类规则。审批、生产环境有不少的不肯定性,更多的时候须要自动肯定接受人的范围,为了适应不一样场合下的须要个人制定了以下接收人规则。 sql

按设置的SQL获取接受人计算 数据库

按SQL计算通俗好理解,就是CCBPM在执行一个查询sql时,返回一个数据源,在数据源里约定该节点的接收人信息。 asp.net

设置方法: 在当前节点属性里 [接受人SQL]设置一个sql 语句. 这个select 查询语句有一个列. No 分别表示,操做 sqlserver

编号, 操做员名称. 这个sql能够有参数. .net

好比:      1, SELECT No,Name FROM PORT_EMP WHERE FK_Dept=@WebUser.FK_Dept   线程

查询出来当前操做员中的部门下的全部人员. 设计

    2, SELECT xxx as  No, yyy as Name FROM dbo.xxxx.YourTable WHERE 字段名称=@表单字段名称. orm

从您的业务系统中,查找一组人员,变量能够是当前节点字段的编号,格式为 @+字段英文名称.

关于合流点的接受人按sql获取接受的表达式的问题

注意子线程向合流点发送时,接受人规则的表达式的变量是临近合流点的子线程节点变量。

好比: 流程编号为ABC三个节点.

A 是分流点,B是合流点 C是子线程。

若是C的接受人员规则是按sql计算:

配置的表达式以下表达式是错误的:

select UserNo as No, xx as Name from ND2701 WHERE OID=@OID

以下表达式才是正确的:

select UserNo as No from ND2701 WHERE OID=@FID

这是由于子线程在发送时获取的变量OID 是子线程的ID而非,干流上的WorkID.

关于子线程接受人的特殊约定:

若是遇到分组的维度,就约定返回4个列来解决问题,流程demo:\\流程树\\同表单分合流\\一人多子线程模式(批次维度任务模式)流程.

在第2个子线程节点配置了以下SQL。

该数据源返回了三个列,分别是:No,Name, GroupMark

No=操做员编号,Name=操做员名称, GroupMark就是分组的维度.

好比配置的SQL: SELECTNo,Name,FK_DeptFROMPort_EmpWHEREFK_Deptin('2','5')

应用场景: 有一批物品须要化验,一我的员可能须要承担多个化验项目,这就须要这我的在这个子线程里有n件工做。再好比:一件工做须要下发两个部门处理,若是一个部门的一我的处理了,另外该部门的人员的工做就要自动去掉,属于抢办任务,也就是说,子线程也须要抢办任务。

对动态表单树的支持:

什么是动态表单树?请参节点属性、表单、表单类型章节。简单的说,该节点的表单是有上一步发送人员动态指定的。该节点大部分是子线程节点,也能够是多人处理的普通节点。

应用场景:a节点发向b节点,张三须要分配给,甲乙丙丁四我的去工做,可是这四我的工做内容不一样。虽然甲乙丙丁四我的均可以接受到该节点的工做,可是填写的内容是由张三动态的分配的。

咱们就要在这里约定数据源来表达接收人的信息,第一种状况没有批次号:返回的列须要有以下要求,No,Name,FrmIDs  第3列是表单ID,多个表单ID用逗号分开。

第二中状况具备批次号:须要返回的列是, No,Name,BatchNo,FrmIDs.

CCBPM为该种应用场景作了一个demo,请参考

在节点2属性里咱们作了以下设置

实现步骤:在开始节点里CCBPM的节点表单里设计了一个明细表。

按SQL肯定子线程接受人与数据源

此方法与分合流相关,只有当前节点是子线程才有意义。

相关文章
相关标签/搜索