金蝶EAS BOS工作流开发(附带JAVA脚本)

1.  流程配置基本知识及示例

1.1. 重要概念

1.1.1.流程变量

流程变量是工作流引擎和业务系统的数据交互的桥梁。

工作流承载业务,驱动业务流程,但是不会执行业务。工作流中的业务执行,全部都会委托给具体的业务模块执行。那么,这些被工作流分割的业务功能,在工作流中被调用执行的时候,如何保证做操作的数据的一致性?

通过流程变量,在每一步的业务功能执行的过程中,将业务数据保存在流程变量中,那么整个流程的后续活动中,都可以引用该流程变量,来完成业务功能,保证业务数据的一致性。

例如:在凭证的审批流程中,新增凭证审批,审批的时候为什么可以正确定为到刚刚提交的那张凭证,而不是别的凭证?流程变量起到了重要的作用。在凭证新增之后,将可唯一标示凭证的ID保存到流程变量中,在审批的时候将流程变量中的值传递给凭证,就可以根据这个ID获取到一张凭证了。

流程变量在流程实例的生命周期内都是有效的。

1.1.2.任务输入输出

         任务输入:在业务发生之前,有工作流传递给业务的数据。以凭证的过账为例,某个用户收到一条凭证过账的消息,双击消息处理。在双击之后、凭证的界面弹出之前,工作流会把定义的入口参数变量中的值传递给凭证,凭证根据这个值来展现特定的单据,展现特定的功能。

         任务输出:在业务发生之后,由业务系统传递给工作流,需要保存在流程变量中的数据。仍以凭证过账为例,在用户操作完凭证过账之后,工作流继续流转之前,如果流程定义中定义了任务的输出,那么,就会将凭证对应的属性的数据,保存在流程变量中。已备在后续的流程活动中使用。

1.2. 注意事项

l   绘画工作流图之前一定要先将业务流整理清楚,分析业务流的特性,提取可以抽象出来公用的东西,分析是否可以进行优化等,好的业务流程可以直接映射为工作流流程。

l   利用“流程变量”的威力,建立单据和流程之间数据交换的桥梁。输入输出参数用来在流程和单据之间进行数据的传递。输入输出参数和流程变量搭建了流程和单据之间的数据联系通道。

l   流程变量赋值时需注意:变量是否在另外地方被改变,有子流程时变量关系如何匹配,对应的是否正确,每个节点对应的变量是否正确,不同的节点可能对应不同的单据id,给变量赋值时需特别细心。

l   如存在一些系统预定义功能无法满足的需求,可以采用自己开发功能,根据输入参数和输出参数来与工作流交互,如在单据中增加function,绑定到自动节点执行,或者是利用脚本节点,获取一些有用的信息输出到流程变量中在工作流中使用。还可以利用工作流的一些新增功能,比如利用函数节点,BOTP节点等来执行特殊需求。

l   参与人动态变化或根据条件变化时,可以充分利用“参与人变量”作为动态值,变量的值可以通过各种方式获取,比如脚本式(后置脚本或脚本活动)、或者任务输出属性方式等。(流程变量中可以定义类型为参与人的变量)

l   利用条件参与人设置一些动态的参与人场景。比如当某条件满足时,设置为某些参与人,当条件不满足或为另外情况时,设置为另外的参与人,通过条件参与人和参与人变量可以满足大部分复杂的参与人场景。条件参与人的参与人范围还可以做为运行期指定下一步活动的参与人范围。

l   善于利用路由节点,除了可设置模式外,还可以对流程图进行美化。

l   一些公用的业务逻辑可以单独抽取出来配置为子流程给其他流程共用,减少维护的流程数量,比如一些常用的审批流程等。

1.3. 基本流程的配置示例

1.3.1.单流程

说明:流程只有一个人工型活动,完成凭证提交的任务,流程结束。没有具体的业务含义。

以凭证提交的业务为例。流程图如下:


定义步骤:

1、 拖入开始、结束活动

2、 拖入人工型活动,用连接弧连接起来。

3、 定义人工型活动

首先,定义人工型活动的任务,选择任务

 

        

选定任务后,定制任务的输入输出。

 

         输入参数是由任务定义带出的

        

根据任务输入的意义,指的是在凭证提交之前,由工作流告知凭证的数据。新建一个流程变量,绑定该输入。

 

        

这里绑定的意思是:在提交之前,工作流会将billID这个流程变量中的数据传递给业务。业务拿到这个值之后,会根据业务需要做出判断。

         [说明]所有人工型任务的输入参数,全部是在定义任务的时候就定义好的。每个任务的输出参数可能不同,是由于各个不同的业务系统对于业务开始之前,所需要的数据不同导致。但是在EAS系统中,基本上任务的输入参数只有一个BOID类型的参数。这是因为一般来说,通过这样一个类型的值,就可以完全定位一个业务单据,并且拿到这个业务单据,就可以满足大部分的业务需求了。

         这里,将ID属性输出,并且选定输出的流程变量是billID

        

凭证提交完毕后,将可以唯一标示一张凭证的ID属性保存在流程变量billID中,在后续的活动中,如果还需要操作这张凭证,就可以通过billID来唯一定位这张凭证,保证业务的一致性。

         参与人定义中,分为了默认参与人和条件参与人。工作流在获取执行人的时候,首先根据条件来逐个扫描条件参与人,发现没有符合,那么会取默认参与人。

         这里简单处理,选择任意人。

 

         提交就可以匹配到该流程

         到现在为止,这条简单的流程就已经定义完毕。发布。到EAS中提交凭证,然后到工作流监控中,会发现有一条流程实例,并且状态是已完成。

1.3.2.审批流程

说明:单据提交之后,经过一层审批,流程结束。

以凭证为示例。流程图如下

 

 

定义步骤:

1、  同场景1.3.1拖入活动

2、  增加一个审批活动,如图画连接弧

3、  配置提交活动。和场景1.3.1中一样选择任务,参与人也是任意人。但是任务的输出夺一项。由于在后续的消息中想展现出单据的编码,所以多输出一个单据编码到一个流程变量number中

 

4、  配置审批活动。为了方便测试,参与人设定为流程发起人的本人

 


这一部分,就是任务输入。对于现在的场景,审批凭证,那么在业务单据内码这一栏选中billID。此时billID已经在提交之后,保存了刚刚提交的凭证的ID。一旦这个审批任务发生执行,那么,在执行前,工作流会将billID这个变量中保存的值传给业务系统。那么审批时就可以唯一定位到一条业务单据。

任务输出,选择将审批结果输出到一个枚举型的流程变量 审批结果 中。

         定制审批消息

 

流程定义完毕。发布,在EAS中执行。

         提交凭证,在消息中心收到一条消息,审批,通过。然后回到凭证序时簿,察看该流程,发现,凭证的状态还是“提交”而不是“审核”。

<
  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值