Appearance
任务
用户任务
用户任务(user task)用于对需要人工执行的任务进行建模。当流程执行到达用户任务时,会为指派至该任务的用户或组的任务列表创建一个新任务。 配置说明
到期时间
每个任务都可以使用一个字段标志该任务的到期时间(due date)。到期时间使用表达式指定,表达式返回值为Date
、String
(ISO8601格式)。 可以使用在流程里前一个表单中输入的日期,或者由前一个服务任务计算出的日期。如果使用的是时间长度,则到期日期基于当前时间加上给定长度计算。
示例
用户指派
用户任务可以直接指派(assign)给用户。只能指定一个用户作为任务的处理人
(assignee) 。拥有处理人的任务,在其他人的任务列表中不可见,而只能在该处理人的个人任务列表中看到。
任务也可以放在用户的候选任务列表中。在这个情况下,需要设置由以下用户认领
或者由以下角色认领
。
示例
注意
- 当
处理人
和由以下用户认领
由以下角色认领
同时有值时,仅处理人
有效。 - 当使用
处理人
和由以下用户认领
表达式应当返回用户的id数组。 - 当使用
由以下角色认领
表达式返回值应该为角色标识符的数组
并签和或签
用户任务的处理人只能是一个用户,在需要并签和或签的场景中,需要开启多实例
模式,为每一个审批人单独创建一个用户任务。
参考请假流程中的行政助理审批
节点和入职流程中的部门主管面试
节点
任务设置
用户任务在分配给处理人
之后,用户从任务列表中打开任务之后,需要执行一个特定的动作来完成任务。可选的执行动作为填写数据表表单
和执行自动化任务
。
当类型为填写数据表表单
时 设置项如下
设置项 | 说明 |
---|---|
表单标识符 | 表单数据保存到变量时的标识符 |
显示查看流程信息按钮 | 在任务页面是否显示查看流程信息按钮 |
将表单数据存储为任务变量 | 开启后表单数据将会存储为任务变量,不同的任务实例之间数据会隔离 |
存储表单的数据表 | 存储表单的数据表 |
字段设置 | 设置在任务表单中字段的显示和编辑状态 |
表单控件 | 设置在任务表单中控件 |
完成后设置表单字段值 | 多用于改变流程状态和设置流程变量 |
示例
任务完成后执行自动化
在任务完成后,可以执行一个自动化
程序来完成其它工作。这里的自动化程序接受一个参数,类型为BpmnTaskArgs
。
详细操作可参考自动化工作流
抄送设置
在任务指派后,可以设置发送抄送提醒给指定的用户。如果使用表达式指定,表达式的返回值为用户ID的数组
示例
js
${Array.of('userID1', 'userID2')}
${['userID1', 'userID2']}
表达式用法参考
服务任务
服务任务用来执行自动化
程序,该自动化程序接受一个参数,类型为BpmnTaskArgs
。自动化
程序可以使用 设置工作流变量
获取工作流变量
等步骤操作流程变量。
详细操作可参考自动化工作流
WARNING
在服务任务执行错误时,系统会回滚事务。打开异步执行开关则会开启新事务执行,不会影响原事务。
脚本任务
脚本任务(script task)是自动执行的活动。当流程执行到达脚本任务时,会执行相应的脚本。 脚本任务采用javascript
语言编写。
所有的流程变量都可以在脚本中使用。在这个例子里,脚本变量'inputArray'实际上就是一个流程变量(一个integer的数组)。
javascript
// inputArray = [1,2,3,4]
let sum = 0
for ( i in inputArray ) {
sum += i
}
也可以简单地调用execution.setVariable("variableName", variableValue),在脚本中设置流程变量。 在脚本中设置变量的例子:
javascript
var scriptVar = "hello world"
execution.setVariable("myVar", scriptVar)
注意
- 保留字不能用于变量名,如:
out
,out:print
,lang:import
,context
,elcontext
。 - 脚本任务中也可以引用到织信相关的api,关于织信api可参考 脚本章节的描述
接受任务
接收任务(receive task),是等待特定消息到达的简单任务。目前,我们只为这个任务实现了Java语义。当流程执行到达接收任务时,流程状态将提交至持久化存储。这意味着流程将保持等待状态,直到引擎接收到特定的消息,触发流程穿过接收任务继续执行。
要使流程实例从接收任务的等待状态中继续执行,需要调用自动化
程序中的触发等待任务继续执行
步骤。
详细操作可参考触发等待任务继续执行
手动任务
手动任务(manual task)定义在BPM引擎之外的任务。它用于建模引擎不需要了解,也不需要提供系统或用户界面的工作。对于引擎来说,手动任务将按直接穿过活动处理,在流程执行到达手动任务时,自动继续执行流程。