在 Studio 中创建流程

对于开发人员来说,Studio 中的 BPMN 建模器是创建自动化流程的主要工具。 除了建模之外,Jmix Studio 还提供:

  • 通过 Jmix 项目树导航至流程模型。

  • BPM Inspector,用于操作 BPMN 元素的属性。

  • 实体数据任务:扩展的 BPMN 组件,可以直接在流程中操作 Jmix 实体。

  • 加载实体的 JPQL 查询语句向导。

  • 创建 Jmix 视图流程表单的向导。

  • 构建工作流时的一些智能提示。

  • 在流程上下文中生成 Spring bean 和 Java 代理模板。

  • 应用启动和热部署时进行流程部署。

在 Studio 中建模

在 Jmix 工具窗口中,找到 BPM 节点。 右键点击并创建一个新的 BPMN 模型。

对我们的报销流程,可以这样填写:

  • Process idreimbursement

  • NameReimbursement(会自动填入)

create process studio

然后在 BPMN Navigator 面板找到 documentation 字段,并填写:

fill documentation studio

创建开始表单

画布中的每个元素都有其自有属性。 此时,画布中唯一的元素只有 StartEvent, 表示发起流程的用户所能看到的 开始表单。 下面我们开始配置:

  • 点击 StartEvent 元素。

  • Form Type 字段选择 Input dialogOpen mode 自动设置为 Dialog

    start form studio

下一步,创建输入参数,提示用户需要为表单输入一些信息:

  • 点击 Parameters 字段的 create 并添加 requestNumber 参数,使用下列属性:

request number studio
  • 重复上面的步骤创建另外三个参数:

    Process variable Caption Type Editable Required

    expenseAmount

    Expense amount

    Decimal (double)

    true

    true

    expenseDate

    Expense Date

    Date

    true

    true

    document

    Document

    File

    true

    true

创建的所有字段如图:

start form filled studio
  • 下一步,创建一个用于选择审批经理的输入参数。 这个参数需要配置更多的属性:

    Process variable Caption Type Editable Required Entity name UI Component JPQL query

    manager

    Manager

    Entity

    true

    true

    User

    ComboBox

    留空*

    * 如果未指定任何语句,则默认为 select e from User e

    manager field studio
  • 设置 Business key 字段的值为 requestNumberbusiness key 是一个流程实例在特定领域的标识符。

添加所有参数完成后,Form 应该如下:

set business key studio

创建审批任务

创建一个用于审批的任务。 审批任务由 审批表单 完成, 只有被指定可以审批该笔报销的经理才能看到。

首先,在画布中添加一个新的元素:

  • 点击 StartEvent 元素进行选中。

  • 点击 Append task append task icon 图标。

  • 点击 Change type change type icon 图标并选择 User Task

    manager assigned studio
    默认情况下,可以用内置的 initiator 流程变量分配任务。
  • 继续在 Form 部分设置下列属性:

    • Form typeInput dialog

    • Open modeDialog(默认设置)

  • 点击 [create btn 链接按钮] 添加下列已有参数,并设置为不可编辑:

    Process variable Caption Type Editable Required

    requestNumber

    Request number

    String

    false

    false

    expenseAmount

    Expense amount

    Decimal (double)

    false

    false

    expenseDate

    Expense Date

    Date

    false

    false

    document

    Document

    File

    false

    false

  • 点击 [create btn 链接按钮] 并为表单创建最后一个参数:

    Process variable Caption Type Editable Required

    comment

    Comment

    Multiline string

    true

    false

    这个参数是一个文本字段,经理可以在审批的时候输入一些备注。

    user task form 1

创建输出

Approval 步骤有两个输出:同意(approved)或驳回(rejected)。 因此,在审批过程中,经理需要有两个按钮可以操作。

  • 画布中选中审批(Approval)元素。 然后在 Outcomes 属性中点击 [create btn 链接按钮]。

  • 为第一个输出设置下列属性:

approval outcomes

根据 Approval 任务的不同输出,后续流程路径也将不同。 在流程的分叉口,我们添加一个排他性的网关(Exclusive Gateway)元素:

  • 选中 Approval 任务元素并点击 Append Gateway append gateway icon

  • 选中网关元素并通过 append task iconchange type iconUser Task 创建一个新的用户任务。

  • 选中网关元素并点击 append end event icon 创建 EndEvent 元素。

  • 选中元素间的流并命名:approvedrejected

model 3
  • 选中 approved 流,并设置其 Condition 属性:

    • Condition sourceUser task outcome

    • User task idApproval

    • User task outcomeapprove

      approve condition studio
  • 类似的,为 rejected 流设置 Condition 属性:

    • Condition sourceUser task outcome

    • User task idApproval

    • User task outcomereject

default flow studio

创建支付用户任务

模型中的另一个用户任务就是需要在审批通过的情况下通知会计可以支付报销款了。 这个任务只有会计才能使用,通过 支付表单 实现。

  • 在画布中选中用户任务,然后设置 IdName

    • Idpayment

    • Name:Payment

对于这个任务,我们需要实现的一个功能是, 当该任务发送给所有的会计时,任何一个会计都可以领取该任务。 因此,这里并不是将任务分配给特定的人员, 而是可以设置 Candidate groups(候选组)Candidate users(候选用户)

现在我们为所有的会计创建一个 Candidate group

离开建模器之前, 可以用工具栏的 save draft button 按钮保存模型草稿。 之后随时可以通过 open draft button 按钮打开保存的草稿。
  • 打开 BPM → User groups 视图,创建一个名为 Accountants 的分组,code 设置为 accountants

  • 用户类型设置为 Users

  • 添加一些用户到这个分组。

    user group
setting candidates studio
流程中的用户必须具有 BPM: process actor 角色。 该角色提供方位 BPM 视图和实体的权限,以便用户可以启动流程或处理用户任务。 角色分配可以在 Application → Users 视图完成。
  • 返回建模器,选中 Payment 用户任务。

  • 找到 Candidate groups 属性字段,并点击编辑按钮 edit btn studio

  • 在候选组编辑器中,添加 Accountants 分组。

    groups
  • Approval 任务一样,为 Payment 任务也配置一个输入对话框。 属性设置如下:

    • Form typeInput dialog

    • Open modeDialog(默认设置)

  • 添加输入参数。参数与审批表单一致,但备注栏也需要设置为不可编辑:

    Process variable Caption Type Editable Required

    requestNumber

    Request number

    String

    false

    true

    expenseAmount

    Expense amount

    Decimal (double)

    false

    true

    expenseDate

    Expense Date

    Date

    false

    true

    document

    Document

    File

    false

    true

    comment

    Comment

    Multiline string

    false

    false

  • 返回画布,在 Payment 任务之后添加 EndEvent 元素 append end event icon

指定用户发起流程

必须为用户创建一个特定的分组,只有这个组内的用户才能发起流程。 这个示例中,我们的分组将包含所有用户。

  • 切换至 Web 应用程序。

  • 打开 User groups 视图,创建一个新的分组,属性如下:

    • Name:All users

    • Code:all-users

    • Type:All users

      all users
  • 回到 Modeler 视图,点击画布的空白处,展示流程属性。

  • Starter candidates 中,设置 Candidate groupsAll users

    set starters studio

部署流程

流程模型已准备好,可以部署至流程引擎。 按照以下步骤:

  • 将草稿复制到流程:

    copy to processes studio
  • 如果应用程序已经启动,使用 "Hot deploy" 按钮:

    hot deploy studio
  • 否则,启动应用程序或以调试模式运行:

    run debug buttons
  • 如果流程部署成功,可以看到控制台的输出:

    BPMN process deployed: reimbursement.bpmn

现在可以按照 下一章 的内容启动并测试流程了。