Skip to content

任务

用户任务

用户任务(user task)用于对需要人工执行的任务进行建模。当流程执行到达用户任务时,会为指派至该任务的用户或组的任务列表创建一个新任务。 createUserTask.gif配置说明

到期时间

每个任务都可以使用一个字段标志该任务的到期时间(due date)。到期时间使用表达式指定,表达式返回值为DateString(ISO8601格式)。 可以使用在流程里前一个表单中输入的日期,或者由前一个服务任务计算出的日期。如果使用的是时间长度,则到期日期基于当前时间加上给定长度计算。

示例

用户指派

用户任务可以直接指派(assign)给用户。只能指定一个用户作为任务的处理人(assignee) 。拥有处理人的任务,在其他人的任务列表中不可见,而只能在该处理人的个人任务列表中看到。

任务也可以放在用户的候选任务列表中。在这个情况下,需要设置由以下用户认领或者由以下角色认领

示例userTask4.png

注意

  • 处理人由以下用户认领 由以下角色认领同时有值时,仅处理人有效。
  • 当使用处理人由以下用户认领表达式应当返回用户的id数组。
  • 当使用由以下角色认领表达式返回值应该为角色标识符的数组

并签和或签

用户任务的处理人只能是一个用户,在需要并签和或签的场景中,需要开启多实例模式,为每一个审批人单独创建一个用户任务。

参考请假流程中的行政助理审批节点和入职流程中的部门主管面试节点

任务设置

用户任务在分配给处理人之后,用户从任务列表中打开任务之后,需要执行一个特定的动作来完成任务。可选的执行动作为填写数据表表单执行自动化任务

当类型为填写数据表表单时 设置项如下

设置项说明
表单标识符表单数据保存到变量时的标识符
显示查看流程信息按钮在任务页面是否显示查看流程信息按钮
将表单数据存储为任务变量开启后表单数据将会存储为任务变量,不同的任务实例之间数据会隔离
存储表单的数据表存储表单的数据表
字段设置设置在任务表单中字段的显示和编辑状态
表单控件设置在任务表单中控件
完成后设置表单字段值多用于改变流程状态和设置流程变量

示例

userTask5.png

任务完成后执行自动化

在任务完成后,可以执行一个自动化程序来完成其它工作。这里的自动化程序接受一个参数,类型为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)

注意

  • 保留字不能用于变量名,如:outout:printlang:importcontextelcontext
  • 脚本任务中也可以引用到织信相关的api,关于织信api可参考 脚本章节的描述

接受任务

接收任务(receive task),是等待特定消息到达的简单任务。目前,我们只为这个任务实现了Java语义。当流程执行到达接收任务时,流程状态将提交至持久化存储。这意味着流程将保持等待状态,直到引擎接收到特定的消息,触发流程穿过接收任务继续执行。

要使流程实例从接收任务的等待状态中继续执行,需要调用自动化程序中的触发等待任务继续执行步骤。

详细操作可参考触发等待任务继续执行

手动任务

手动任务(manual task)定义在BPM引擎之外的任务。它用于建模引擎不需要了解,也不需要提供系统或用户界面的工作。对于引擎来说,手动任务将按直接穿过活动处理,在流程执行到达手动任务时,自动继续执行流程。