官网地址:https://www.flowable.org/
一、Bpmn常用节点
1、Task任务:
用户任务(userTask)
系统任务(serviceTask )
2、Event事件:
定时器事件(timerEventDefinition)
3、Gateway网关:
排他网关(exclusive gateway)
二、关键字段
1、procInstId 流程实例Id
2、taskId 任务Id
3、executionId 执行Id
总结一下,如果形象的拿procInstId,executionId,taskId做一个比喻的话,procInstId为一个面,executionId为在面上的一条线,taskId为在线上的一个点。
4、processDefinitionId (w10:9:b06e3e66-bb55-11e9-97c7-c485089b220a)流程定义Id
通过DEPLOYMENT_ID 关联 aff565df-bb55-11e9-97c7-c485089b220a (多对一)
5、processDefinitionKey(就是xml 定义的key: w10) 流程定义Key
6、processDefinitionName (w10#1)流程定义名称
后边三个是在xml中配置的
<process id="w10" name="w10 #1" isExecutable="true">
发起一个流程:
利用方法 repositoryService.createProcessDefinitionQuery().processDefinitionKey(key) .latestVersion().singleResult()
从act_re_procdef 表中取出processDefinitionId ,variables为变量的map执行此方法
(通过flowable提供的接口runtimeService中的startProcessInstanceBy**去发起)
ProcessInstance startProcessInstanceById(String processDefinitionId, Map<String, Object> variables);
执行完以上语句会返回procInstId 流程实例Id
备注:
1.bpmn流程图后缀
其中资源后缀的定义如下:
public static final String[] BPMN_RESOURCE_SUFFIXES = new String[]{"bpmn20.xml", "bpmn"};
也就是说我们必须以这2个格式结束,否则无法加入流程中。
以bpmn或者bpmn20.xml结尾
2.如果没有自动创建出整个表
原因:isEngineTablePresent(是否从新创建表)
可以看到使用的是表ACT_RU_EXECUTION是否存在来判断的,可能别的数据库中有这个表
3.流程表:ACT_RE_PROCDEF 为空
其中资源后缀的定义如下:
public static final String[] BPMN_RESOURCE_SUFFIXES = new String[]{"bpmn20.xml", "bpmn"};
必须以这bpmn或者bpmn20.xml结尾,否则无法加入流程中。
4.监听器(user Task)类型:
public interface BaseTaskListener extends Serializable {
String EVENTNAME_CREATE = "create";
String EVENTNAME_ASSIGNMENT = "assignment";
String EVENTNAME_COMPLETE = "complete";
String EVENTNAME_DELETE = "delete";
/**
* Not an actual event, used as a marker-value for {@link BaseTaskListener}s that should be called for all events, including {@link #EVENTNAME_CREATE} , {@link #EVENTNAME_ASSIGNMENT} and
* {@link #EVENTNAME_COMPLETE} and {@link #EVENTNAME_DELETE}.
*/
String EVENTNAME_ALL_EVENTS = "all";
}
public interface TaskListener extends BaseTaskListener {
void notify(DelegateTask delegateTask);
}
(1)create:任务创建时,并且所有的属性都被设置好后,进入该回调。
(2)assignment:任务被委派给某人后.。注意: 当流程执行到达一个userTask时。
(3)complete:在任务完成后,且被从运行时数据(runtime data)中删除前触发。
(4)delete:在任务将要被删除之前发生。注意,当任务通过completeTask完成任务时,它也会被执行。
5.assignment任务被委派给某人
{
"approved": false,
"assignee": "ZHANGSAN",
"comment": "委派给张三",
"processId": "f2056621-be97-11e9-ba31-c485089b220a",
"reassigned": true,
"taskId": "f27f0303-be97-11e9-ba31-c485089b220a"
}
代码如下:
if (review.reassigned) {
if (Strings.isNullOrWhitespace(review.getAssignee())) {
throw new NoAssigneeException();
}
engineTaskService.setAssignee(taskId, review.getAssignee());
}
7 *.bpmn20.xml 修改后不生效
a,有xml报错,会造成ACT_GE_BYTEARRAY不更新(旧的有效)
8.eclipse flowable插件
导入项目,注意选择maven 选择General
安装插件
Name: Flowable BPMN 2.0 designer
Location: http://flowable.org/designer/update/
安装完毕后打开
7.修改bpmn流程图