BPMN文件详解

本文详细解析BPMN文件在Activiti中的应用,包括流程定义、事件、任务、顺序流及网关等核心概念。阐述了如何通过XML格式定义流程,以及如何指定任务办理人和用户组。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  bpmn文件是activiti配置流程定义的文件,一般习惯将一个bpmn文件定义一个流程,文件格式为xml

<?xml version="1.0" encoding="UTF-8"?>
<definitions>
    <process id="my-process">
	<startEvent id="start"/>
	    <sequenceFlow id="flow1" sourceRef="start" targetRef="someTask" />
	<userTask id="someTask" name="Activiti is awesome!" />
	    <sequenceFlow id="flow2" sourceRef="someTask" targetRef="end" />
	<endEvent id="end"/>
    </process>
</definitions>

  process:流程定义根元素,代表了一个流程定义的开始

id:流程定义ID,代表该流程的唯一性,启动该流程时需要使用该ID
isExecutable:表示该流程是否可执行,其值有true和false,默认为true
name:流程名称
type:流程类型
isClosed:流程是否已关闭,关闭不能执行

 startEvent:流程启动事件,一个process只能有一个,且必须为流程起始元素

id:启动节点id
name:启动节点名称

 userTask: 流程中间用户任务,夹在startEvent与endEvent之间的节点,表示需要待办人处理的节点

id:   任务节点id,必须是唯一的
name:任务节点名称
activiti:assignee       任务所属用户,只能指定用户完成这个任务,即任务办理人
activiti:candidateUsers 多个任务办理人
activiti:candidateGroups 任务处理人候选组,处理人必须在这个组内
activiti:exclusive    独家的,好像是在排它性网关中使用,意思应该是在有并行分支情况下,只会走其中一条
activiti:dueDate      设置用户任务到期日期
activiti:priority     用户任务优先级,0-100

  extensionElements: userTask的子元素,用于扩展元素 

  activiti:taskListener: 扩展元素之一,用于监听某个任务的运行

<userTask>
    <extensionElements>
        <activiti:taskListener></activiti:taskListener>
    </extensionElements>
</userTask>
属性名	含义
event	监听的任务事件名,create、assignment(分配任务)、complete
class	任务监听器类,需要实现TaskListener

 

 sequenceFlow顺序流

id:       顺序流id
sourceRef:上一个节点id
targetRef: 下一个节点id

 conditionExpression: sequenceFlow子元素,根据表达式确定是否执行这一顺序流,一条顺序流只能联系两个节点如果需要表达式判断,有多条顺序流连接了同一开始节点,一般这样的开始节点都是网关

<sequenceFlow>
    <conditionExpression></conditionExpression>
</sequenceFlow>
属性名	        含义
xsi:type	含义不知道,值为tFormalExpression
子元素	        表达式,${days <= 3}

exclusiveGateway: 排它性网关,即多个sequenceFlow以网关节点开始时,只根据条件执行其中一条流,其他流不再判断

虽然与userTask同属于节点,但是其不作为任务执行

属性名	含义
id	节点id
name	节点名称
gatewayDirection	网关方向,Unspecified

 

 

 endEvent:流程结束事件,一个process只能有一个,且必须为流程结束元素

id:结束节点id
name:结束节点名称

 在userTask节点中几种指定代办人的方法,${} 表示使用参数的传递,当然也可以传具体值

 candidateUsers  指定的是代办人,如下图配置参数

#参数 ${productUsers}
candidateUsers="${productUsers}"

#传递具体值时多个参数用英文逗号分隔
candidateUsers="张三,李四,王五"

 candidateGroups  指定的是用户组,如下图配置参数

#指定传递参数的用户组
candidateGroups="${requireGroup}"
#指定具体的用户组
candidateGroups="approver_group"

 assignee 指定办理人,如下图配置参数

#指定含有参数的办理人
assignee="${user}"
#指定具体的办理人
assignee="张三"

candidateUsers和candidateGroups组代办任务,assigne个人待办任务,组代办任务认领后变成个人待办任务,解除认领回到组待办任务,这些再实际运用中会常见。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值