工作流的配置方法有三种:
- 1、
<activiti:executionListener event="end" class="com.daling.ch1.listener.MyExecutionListener">
- 2、
<activiti:taskListener event="create" delegateExpression="${bossTaskListener}">
- 3、动态的实现接口添加;
工作流的监听器有两类:
- 1、implements Serializable, ExecutionListener 实现了这两个接口的类是流程监听器,序列化可能会失败,可以查看异常报告中的序列号进行复制粘贴;
- 2、implements Serializable, TaskListener 实现了这两个接口的类是节点监听器。
我在写节点监听器的时候,第一个节点审批完之后,第二个节点审批会获取不到上下文,我在节点监听器后面加了流程监听器,这个异常消失。
流程监听器的常用方法
/** execution Id */
String getId();
/** 流程实例id*/
String getProcessInstanceId();
/** 这个比较有用 主要就是start、end、take */
String getEventName();
/**
* 业务id已经废弃
*/
String getBusinessKey();
/**
* 业务id */
String getProcessBusinessKey();
/**
* 流程定义id
*/
String getProcessDefinitionId();
/**
* 获取父id,并发的时候有用
*/
String getParentId();
/**
* 获取当前的.Activityid
*/
String getCurrentActivityId();
/**
* 获取当前的.Activity name
*/
String getCurrentActivityName();
/**
* 获取TenantId 当有多个TenantId 有用
*/
String getTenantId();
/**
* 这个非常有用吧。当拿到EngineServices 对象所有的xxxService都可以拿到。
*/
EngineServices getEngineServices();
节点监听器的主要方法
/** 数据库中的taskId主键*/
String getId();
/** 任务名称 */
String getName();
/** 修改任务名称 */
void setName(String name);
/** 获取任务的描述信息 */
String getDescription();
/** 修改任务的描述信息 */
void setDescription(String description);
/**
* lower priority: [0..19] lowest, [20..39] low, [40..59] normal, [60..79] high
* [80..100] highest
任务处理的优先级范围是0-100
*/
int getPriority();
/** 修改优先级*/
void setPriority(int priority);
/** 获取流程实例id */
String getProcessInstanceId();
/**获取执行id*/
String getExecutionId();
/** 获取流程定义id*/
String getProcessDefinitionId();
/** Adds the given user as a candidate user to this task. */
void addCandidateUser(String userId);
/** 添加候选人 */
void addCandidateUsers(Collection<String> candidateUsers);
/** 添加候选组 */
void addCandidateGroup(String groupId);