在 Web 应用中创建流程

业务分析师可以使用建模器(Modeler)直接在 Web 应用程序中创建流程的模型。 如果该流程不涉及 Java 代码的开发,则完全可以在 Web 环境中部署和执行。

下面我只使用 Web 工具创建 bpm:getting-started.adoc#sample-process

在 Web 中建模

启动应用程序并打开 BPM → Modeler(建模器) 视图。 面板的右侧显示当前流程的属性列表。

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

  • Process idreimbursement

  • NameReimbursement

  • Documentation:为流程添加一个简短的描述。

    properties

创建开始表单

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

  • 点击 StartEvent 元素。

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

    start event

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

  • 点击 plus button 并添加 requestNumber 参数,使用下列属性:

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

    Process variable Caption Type Editable Required

    expenseAmount

    Expense amount

    Decimal (double)

    true

    true

    expenseDate

    Expense Date

    Date

    true

    true

    document

    Document

    File

    true

    true

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

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

    manager

    Manager

    Entity

    true

    true

    User

    ComboBox

    留空*

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

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

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

form

创建审批任务

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

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

  • 点击 StartEvent 元素进行选中。

  • 点击 Append task append task icon 图标。

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

    user task
  • 为该用户任务设置以下 General 属性:

    • Idapproval

    • NameApproval

    • Assignee sourceProcess variable

    • Process variablemanager

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

    • Form typeInput dialog

    • Open modeDialog(默认设置)

  • 点击 plus button 添加下列已有参数,并设置为不可编辑:

    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

  • 点击 plus button 并为表单创建最后一个参数:

    Process variable Caption Type Editable Required

    comment

    Comment

    Multiline string

    true

    false

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

创建输出

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

  • 画布中选中审批(Approval)元素。 然后在 Outcomes 属性中点击 plus button

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

    outcome approve
  • 重复以上步骤创建第二个输出:

    Business id Caption Icon

    reject

    Reject

    BAN

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

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

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

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

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

现在模型如下:

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

    • Condition sourceUser task outcome

    • User task idApproval

    • User task outcomeapprove

      flow approved
  • 类似的,为 rejected 流设置 Condition 属性:

    • Condition sourceUser task outcome

    • User task idApproval

    • User task outcomereject

创建支付用户任务

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

  • 在画布中选中用户任务,然后设置 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
流程中的用户必须具有 BPM: process actor 角色。 该角色提供方位 BPM 视图和实体的权限,以便用户可以启动流程或处理用户任务。 角色分配可以在 Application → Users 视图完成。
  • 返回建模器,选中 Payment 用户任务。

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

  • 在候选组编辑器中,添加 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

指定用户发起流程

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

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

  • Name:All users

  • Code:all-users

  • Type:All users

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

    • Starter candidates 中,设置 Candidate groupsAll users

      users start

部署流程

流程模型已准备好,可以部署至流程引擎。

  • 打开 Modeler 视图。

  • 点击工具栏的 Deploy process deploy process button

  • 打开 BPM → Start Process 视图。

列表中应该可以看到新的 Reimbursement 流程。 这个列表中是所有当前用户可以启动的已部署流程。

现在可以启动并测试流程,请移步至 下一节