`
shihukui
  • 浏览: 6445 次
  • 性别: Icon_minigender_1
  • 来自: 贵阳
社区版块
存档分类
最新评论

在Activiti-5.4中实现会签

 
阅读更多



 

 最近正在使用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.task;

import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;

import com.flowcenter.common.service.ISignTaskRuleService;

/**
 * 会签人工任务TaskListener
 * @author ShiHukui
 *
 */
public class CounterSignTaskListener implements TaskListener {
	
	/**
	 * 注入会签规则业务层
	 */
	private ISignTaskRuleService signTaskRuleService;
	public void setSignTaskRuleService(ISignTaskRuleService signTaskRuleService) {
		this.signTaskRuleService = signTaskRuleService;
	}


	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 , 
													  taskKey , 
													  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);
		}
	}
	
}

 

 

 4、流程图

 

 

 

  • 大小: 6.8 KB
  • 大小: 23.8 KB
1
2
分享到:
评论
8 楼 gzhc_825 2013-02-26  
能不能将你signTaskRuleService中的相关代码页贴出来看看,谢谢!
7 楼 tomsun2283 2012-10-24  
用户任务分配:
List assigneeList = Arrays.asList("zhangsan","lishi","wangwu"); 
variables.put("assigneeList", assigneeList);
6 楼 man1900 2012-07-26  
http://man1900.iteye.com/blog/1607753
5 楼 chxkyy 2012-06-18  
assigneeList 从哪里获取?
4 楼 chxkyy 2012-06-18  
cooperay 写道
貌似有点复杂了 
看看 这个
http://cooperay.iteye.com/admin/blogs/1461385

人家讲的会签,你讲的自动运行,不要误导好不好。
3 楼 cooperay 2012-03-22  
貌似有点复杂了 
看看 这个
http://cooperay.iteye.com/admin/blogs/1461385
2 楼 BigBird2012 2011-11-07  
您好,看到你的会签策略,请加我Q1755610380,有问题请教您!
1 楼 nicholas234 2011-09-19  
能不能将你signTaskRuleService中的相关代码页贴出来看看

相关推荐

Global site tag (gtag.js) - Google Analytics