博客分类:
最近正在使用Activiti5.4实现系统中的流程,在发文流程中有会签,研究了两天终于搞定了,现分享出来,以免其他兄弟们走弯路了,其中有不对的欢迎拍砖。
1、会签节点策略配置
2、流程定义文件中会签节点的配置
&userTask id="usertask2" name="会签" activiti:assignee="${hqr}"&
&extensionElements&
&activiti:taskListener event="create" delegateExpression="${counterSignTaskListener}"&&/activiti:taskListener&
&activiti:taskListener event="complete" delegateExpression="${counterSignTaskListener}"&&/activiti:taskListener&
&/extensionElements&
&multiInstanceLoopCharacteristics isSequential="false" activiti:collection="assigneeList" activiti:elementVariable="hqr"&
&completionCondition&${signVoteResult != 2 }&/completionCondition&
&/multiInstanceLoopCharacteristics&
&/userTask&
3、counterSignTaskListener代码
package com.flowcenter.listener.
import org.activiti.engine.delegate.DelegateT
import org.activiti.engine.delegate.TaskL
import com.flowcenter.common.service.ISignTaskRuleS
* 会签人工任务TaskListener
* @author ShiHukui
public class CounterSignTaskListener implements TaskListener {
* 注入会签规则业务层
private ISignTaskRuleService signTaskRuleS
public void setSignTaskRuleService(ISignTaskRuleService signTaskRuleService) {
this.signTaskRuleService = signTaskRuleS
public void notify(DelegateTask delegateTask) {
// 事件名称
String eventName = delegateTask.getEventName();
// 任务相关信息
String taskId = delegateTask.getId();
String taskKey = delegateTask.getTaskDefinitionKey();
String procDefId = delegateTask.getProcessDefinitionId();
String procInstId = delegateTask.getProcessInstanceId();
// 获取当前UUID
String signTaskUUID = (String)delegateTask.getVariable("signTaskUUID");
// create 事件
if("create".equals(eventName)) {
// 获取审核人列表
String assigneeList = delegateTask.getVariable("assigneeList").toString();
System.out.println("会签人为:"+assigneeList);
// 保存会签人员信息
signTaskRuleService.saveSignTaskAssignees(taskId ,
delegateTask.getName() ,
procInstId ,
procDefId,
delegateTask.getAssignee(),
signTaskUUID ,
assigneeList);
// complete 事件
else if("complete".equals(eventName)) {
// 获取投票结果和意见
String voteResult = (String) delegateTask.getVariable("voteResult");
String voteOpinion = (String) delegateTask.getVariable("voteOpinion");
// 填充审核人投票信息
int result = signTaskRuleService.saveSignTaskAssigneeVote(taskId, taskKey, procDefId, procInstId, voteResult, voteOpinion , signTaskUUID);
System.out.println("会签结果为(0:打回,1:通过,2:会签进行中):"+result);
delegateTask.setVariable("signVoteResult", result);
貌似有点复杂了& 看看 这个http://cooperay.iteye.com/admin/blogs/1461385人家讲的会签,你讲的自动运行,不要误导好不好。
浏览: 4902 次
来自: 贵阳
能不能将你signTaskRuleService中的相关代码页 ...
用户任务分配:List assigneeList = Arra ...
http://man1900.iteye.com/blog/1 ...
assigneeList 从哪里获取?
&div class="e_title ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'