在 Web 应用中创建流程
业务分析师可以使用建模器(Modeler)直接在 Web 应用程序中创建流程的模型。 如果该流程不涉及 Java 代码的开发,则完全可以在 Web 环境中部署和执行。
下面我只使用 Web 工具创建 bpm:getting-started.adoc#sample-process。
在 Web 中建模
启动应用程序并打开 BPM → Modeler(建模器) 视图。 面板的右侧显示当前流程的属性列表。
对我们的报销流程,可以这样填写:
-
Process id:
reimbursement
-
Name:
Reimbursement
-
Documentation:为流程添加一个简短的描述。
创建开始表单
画布中的每个元素都有其自有属性。
此时,画布中唯一的元素只有 StartEvent
,
表示发起流程的用户所能看到的
开始表单。
下面我们开始配置:
-
点击
StartEvent
元素。 -
在 Form Type 字段选择
Input dialog
。Open mode 自动设置为 Dialog。
下一步,创建输入参数,提示用户需要为表单输入一些信息:
-
点击 并添加
requestNumber
参数,使用下列属性:
-
重复上面的步骤创建另外三个参数:
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 字段的值为
requestNumber
。 business key 是一个流程实例在特定领域的标识符。
添加所有参数完成后,Form 应该如下:
创建审批任务
创建一个用于审批的任务。 审批任务由 审批表单 完成, 只有被指定可以审批该笔报销的经理才能看到。
首先,在画布中添加一个新的元素:
-
点击
StartEvent
元素进行选中。 -
点击 Append task 图标。
-
点击 Change type 图标并选择 User Task。
-
为该用户任务设置以下 General 属性:
-
Id:
approval
-
Name:
Approval
-
Assignee source:
Process variable
-
Process variable:
manager
默认情况下,可以用内置的 initiator
流程变量分配任务。
-
-
继续在 Form 部分设置下列属性:
-
Form type:
Input dialog
-
Open mode:
Dialog
(默认设置)
-
-
点击 添加下列已有参数,并设置为不可编辑:
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
-
点击 并为表单创建最后一个参数:
Process variable Caption Type Editable Required comment
Comment
Multiline string
true
false
这个参数是一个文本字段,经理可以在审批的时候输入一些备注。
创建输出
Approval 步骤有两个输出:同意(approved)或驳回(rejected)。 因此,在审批过程中,经理需要有两个按钮可以操作。
-
画布中选中审批(Approval)元素。 然后在 Outcomes 属性中点击 。
-
为第一个输出设置下列属性:
-
重复以上步骤创建第二个输出:
Business id Caption Icon reject
Reject
BAN
根据 Approval 任务的不同输出,后续流程路径也将不同。 在流程的分叉口,我们添加一个排他性的网关(Exclusive Gateway)元素:
-
选中 Approval 任务元素并点击 Append Gateway 。
-
选中网关元素并通过 → → User Task 创建一个新的用户任务。
-
选中网关元素并点击 创建
EndEvent
元素。 -
选中元素间的流并命名:
approved
和rejected
。
现在模型如下:
-
选中
approved
流,并设置其 Condition 属性:-
Condition source:
User task outcome
-
User task id:
Approval
-
User task outcome:
approve
-
-
类似的,为
rejected
流设置 Condition 属性:-
Condition source:
User task outcome
-
User task id:
Approval
-
User task outcome:
reject
-
创建支付用户任务
模型中的另一个用户任务就是需要在审批通过的情况下通知会计可以支付报销款了。 这个任务只有会计才能使用,通过 支付表单 实现。
-
在画布中选中用户任务,然后设置 Id 和 Name:
-
Id:
payment
-
Name:Payment
-
对于这个任务,我们需要实现的一个功能是当该任务发送给所有的会计时,任何一个会计都可以领取该任务。 因此,这里并不是将任务分配给特定的人员,而是可以设置 Candidate groups(候选组) 或 Candidate users(候选用户)。
现在我们为所有的会计创建一个 Candidate group。
离开建模器之前,可以用工具栏的 按钮保存模型草稿。 之后随时可以通过 按钮打开保存的草稿。 |
-
打开 BPM → User groups 视图,创建一个名为
Accountants
的分组,code 设置为accountants
。 -
用户类型设置为 Users。
-
添加一些用户到这个分组。
流程中的用户必须具有 BPM: process actor 角色。
该角色提供方位 BPM 视图和实体的权限,以便用户可以启动流程或处理用户任务。
角色分配可以在 Application → Users 视图完成。
|
-
返回建模器,选中
Payment
用户任务。 -
找到 Candidate groups 属性字段,并点击编辑按钮 。
-
在候选组编辑器中,添加
Accountants
分组。 -
与
Approval
任务一样,为Payment
任务也配置一个输入对话框。 属性设置如下:-
Form type:
Input dialog
-
Open mode:
Dialog
(默认设置)
-
-
添加输入参数。参数与审批表单一致,但备注栏也需要设置为不可编辑:
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
元素 。
部署流程
流程模型已准备好,可以部署至流程引擎。
-
打开 Modeler 视图。
-
点击工具栏的 Deploy process 。
-
打开 BPM → Start Process 视图。
列表中应该可以看到新的 Reimbursement 流程。 这个列表中是所有当前用户可以启动的已部署流程。
现在可以启动并测试流程,请移步至 下一节。