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

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

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

接受人规则,就是为了解决下一步发送人的范围所制定的各种规则。审批、生产环境有很多的不确定性,更多的时候需要自动确定接受人的范围,为了适应不同场合下的需要我的制定了如下接收人规则。

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

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

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

编号, 操作员名称. 这个sql可以有参数.

比如:      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 字段名称=@表单字段名称.

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

关于合流点的接受人按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确定子线程接受人与数据源

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
jbpm是一个开源的Java工作流引擎,它提供了一个框架和工具,用于定义、执行和管理业务流程。jbpm的持久层采用hibernate3来实现,这是因为jbpm的靠山是jboss,而hibernate是jboss的一个重要组成部分,因此选择了hibernate作为持久层的实现方式。 jbpm的工作流引擎具有以下特点: . 灵活性:jbpm允许用户通过定义流程模型和规则来灵活地定义和修改业务流程。它支持基于图形化的流程设计器,使得流程定义更加直观和易于理解。 2. 可扩展性:jbpm提供了丰富的扩展点和插件机制,可以根据具体需求进行定制和扩展。用户可以自定义各种节点类型、执行器、监听器等,以满足不同的业务场景。 3. 可视化:jbpm提供了一个基于Web的控制台,用于监控和管理运行中的流程实例。用户可以实时查看流程状态、任务列表、流程历史等信息,方便进行流程管理和优化。 4. 高性能:jbpm采用了基于事件驱动的执行模型,能够高效地处理大量的并发流程实例。它支持异步执行、并行分支、定时器等功能,提供了良好的性能和可伸缩性。 5. 可靠性:jbpm具有良好的事务管理和异常处理机制,能够保证流程执行的一致性和可靠性。它支持分布式部署和集群模式,提供了高可用性和容错性。 总结起来,jbpm是一个功能强大、灵活可扩展的Java工作流引擎,适用于各种业务场景和规模的流程管理需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值