九、工作流使用问题解答
I、工作流快速入门部分
1、怎么理解流程变量?
流程变量是工作流引擎和业务系统的数据交互的桥梁。
工作流承载业务,驱动业务流程,但是不会执行业务。工作流中的业务执行,全部都会委托给具体的业务模块执行。那么,这些被工作流分割的业务功能,在工作流中被调用执行的时候,如何保证做操作的数据的一致性?
通过流程变量,在每一步的业务功能执行的过程中,将业务数据保存在流程变量中,那么整个流程的后续活动中,都可以引用该流程变量,来完成业务功能,保证业务数据的一致性。
例如:在凭证的审批流程中,新增凭证审批,审批的时候为什么可以正确定为到刚刚提交的那张凭证,而不是别的凭证?流程变量起到了重要的作用。在凭证新增之后,将可为一标示凭证的ID保存到流程变量中,在审批的时候将流程变量中的值传递给凭证,就可以根据这个ID可以唯一获取到一张凭证了。
流程变量在流程实例的生命周期内都是有效的。
2、怎么理解任务输入输出? 任务输入:在业务发生之前,有工作流传递给业务的数据。以凭证的过账为例,某个用户收到一条凭证过账的消息,双击消息处理。在双击之后、凭证的界面弹出之前,工作流会把定义的入口参数变量中的值传递给凭证,凭证根据这个值来展现特定的单据,展现特定的功能。 任务输出:在业务发生之后,由业务系统传递给工作流,需要保存在流程变量中的数据。仍以凭证过账为例,在用户操作完凭证过账之后,工作流继续流转之前,如果流程定义中定义了任务的输出,那么,就会将凭证对应的属性的数据,保存在流程变量中。已备在后续的流程活动中使用。
3、嵌入式工作流与流程自动匹配 金蝶EAS的工作流式支持嵌入式工作流,嵌入式工作流系统有如下的特性:
1、 无需更改用户的操作习惯,在序时簿上操作,也可以正常的激活驱动工作流,而不
必一定要到消息中心去处理业务
2、 流程自动匹配。可以通过执行流程的启动活动的操作,自动匹配流程,启动流程实
例。流程实例启动后,启动活动已经完成,流程自动向下流转。
流程匹配的条件是任务和参与人。在任务相同的情况下,流程匹配存在优先级。从高到低依次是:职员、职位、组织、任意人。
4、场景1:单活动流程
场景说明:流程只有一个人工型活动,完成凭证提交的任务,流程结束。没有具体的业务含义。
以凭证提交的业务为例。流程图如下:
定义步骤:
1、 拖入开始、结束活动
2、 拖入人工型活动,用连接弧连接起来。 3、 定义人工型活动
首先,定义人工型活动的任务,选择任务
选定任务后,定制任务的输入输出。 输入参数是由任务定义带出的
根据任务输入的意义,指的是在凭证提交之前,由工作流告知凭证的数据。新建一个流程变量,绑定该输入。
这样绑定的意思是:在凭证提交之前,工作流会将billID这个流程变量中的数据传递给凭证业务。凭证业务得到这个值之后,会根据业务需要做出判断。 [说明]所有人工型任务的输入参数,全部是在定义任务的时候就定义好的。每个任务的输出参数可能不同,是由于各个不同的业务系统对于业务开始之前,所需要的数据不同导致。但是在EAS系统中,基本上任务的输入参数只有一个BOID类型的参数。这是因为一般来说,通过这样一个类型的值,就可以完全定位一个业务单据,并且拿到这个业务单据,就可以满足大部分的业务需求了。 [说明]对于示例中的这个节点,在业务发生的时候,billID还没有任何赋值,这个时候传递给业务系统的也将是个空值。根据工作流系统和业务系统的约定,传递空值对业务系统来说,意味着新增单据。
再来看看任务输出
左边的是单据对应的业务对象的所有属性,右边是选定的输出。 在这里,将ID属性输出,并且选定输出的流程变量是billID
在这个简单的示例中,这个输出没有意义。
但是在后面的场景中,可以看到,这个输出具有很重要的意义:凭证提交完毕后,将可以唯一标示一张凭证的ID属性保存在流程变量billID中,在后续的活动中,如果还需要操作这张凭证,就可以通过billID来唯一定位这张凭证,保证业务的一致性。 任务定义完毕,来定义参与人。 参与人定义中,分为了默认参与人和条件参与人(条件参与人如何定制和使用,请参见另一篇专门针对提交参与人的文档)。工作流在获取执行人的时候,首先根据条件来逐个扫描条件参与人,发现没有符合,那么会取默认参与人。 这里简单处理,选择任意人。
[说明]前面提到过,流程自动匹配的优先级。下面举例说明。
有两条流程,同样启动活动的任务都是“凭证提交”,A流程的启动活动参与人设置为“张三”,B流程启动活动参与人设置为“公司所有人”。那么张三录入凭证的时候,匹配的流程是A。 [说明]任意人作为一个特殊的参与人定义方式,只针对于启动活动生效!意思是说,只要有凭证提交的权限的人,提交凭证就可以匹配到该流程 到现在为止,这条简单的流程就已经定义完毕。发布。到EAS中提交凭证,然后到工作流监控中,会发现有一条流程实例,并且状态是已完成。
5、场景2:审批流程
场景说明:单据提交之后,经过一层审批,流程结束。 以凭证为示例。流程图如下
定义步骤:
1、 同场景1拖入活动
2、 增加一个审批活动,如图画连接弧
3、 配置提交活动。和场景1中一样选择任务,参与人也是任意人。但是任务的输出多
一项。由于在后续的消息中想展现出单据的编码,所以多输出一个单据编码到一个流程变量number中
4、 配置审批活动。为了方便测试,参与人设定为流程发起人的本人
任务页签和一般的任务有些不同,是因为审批是一个通用的业务,对其任务进行了包装。只是展现的UI不同,实质是一样的。