`
longgangbai
  • 浏览: 7250070 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

工作流Activiti的学习总结(十二) activiti官方十分钟快速学习

阅读更多

  根据activiti官方提供的 编写 
      1.财务部门填写月财务报告
      2.股东审核月财务审计报告

 

流程图:

 

 

流程配置:

 

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://activiti.org/bpmn20">
  <process id="financialReport" name="Monthly financial report reminder process">
    <startEvent id="startevent1" name="月财务报告审核开始"></startEvent>
    <!-- 采用用户组为accountancy编写财务报告  -->
    <userTask id="usertask1" name="财务编写月财务报告" activiti:candidateGroups="accountancy"></userTask>
    <userTask id="usertask2" name="股东审核月财务审计报告" activiti:candidateGroups="management"></userTask>
    <endEvent id="endevent1" name="月财务报告审核结束"></endEvent>
    <sequenceFlow id="flow1" name="" sourceRef="startevent1" targetRef="usertask1"></sequenceFlow>
    <sequenceFlow id="flow2" name="" sourceRef="usertask1" targetRef="usertask2"></sequenceFlow>
    <sequenceFlow id="flow3" name="" sourceRef="usertask2" targetRef="endevent1"></sequenceFlow>
  </process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_financialReport">
    <bpmndi:BPMNPlane bpmnElement="financialReport" id="BPMNPlane_financialReport">
      <bpmndi:BPMNShape bpmnElement="startevent1" id="BPMNShape_startevent1">
        <omgdc:Bounds height="35" width="35" x="30" y="200"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="usertask1" id="BPMNShape_usertask1">
        <omgdc:Bounds height="55" width="105" x="125" y="190"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="usertask2" id="BPMNShape_usertask2">
        <omgdc:Bounds height="55" width="105" x="290" y="190"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="endevent1" id="BPMNShape_endevent1">
        <omgdc:Bounds height="35" width="35" x="455" y="200"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge bpmnElement="flow1" id="BPMNEdge_flow1">
        <omgdi:waypoint x="65" y="217"></omgdi:waypoint>
        <omgdi:waypoint x="125" y="217"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="flow2" id="BPMNEdge_flow2">
        <omgdi:waypoint x="230" y="217"></omgdi:waypoint>
        <omgdi:waypoint x="290" y="217"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="flow3" id="BPMNEdge_flow3">
        <omgdi:waypoint x="395" y="217"></omgdi:waypoint>
        <omgdi:waypoint x="455" y="217"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</definitions>

 

编码如下:

package com.easyway.spring.activiti;

import java.util.List;

import org.activiti.engine.HistoryService;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngineConfiguration;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.history.HistoricProcessInstance;
import org.activiti.engine.task.Task;
/**
 * 根据activiti官方提供的 编写 
 *     1.财务部门填写月财务报告
 *     2.股东审核月财务审计报告
 *     
 *     
 * activiti提供的财务报告审核
 * <!-- 采用用户组为accountancy编写财务报告  -->
 *   <userTask id="usertask1" name="财务编写月财务报告" activiti:candidateGroups="accountancy"></userTask>
 * <!-- 采用用户组为management编写财务报告  -->
 *   <userTask id="usertask2" name="股东审核月财务审计报告" activiti:candidateGroups="management"></userTask>
 * 
 * 备注:
 *    默认的两个用户:
 *    <pre>
 *       用户名   密码         用户组 
		Table 2.1. The demo users
		UserId Password Security roles 
		kermit kermit admin 
		gonzo gonzo manager 
		fozzie fozzie user 
 *    </pre>
 * 
 * @author longgangbai
 * 
 * 2011-12-18  下午04:08:46
 */
public class CustomFinancialReportActiviti {
	
	    public static void main(String[] args) {
	    	// Create Activiti process engine 
	    	//创建一个流程引擎对象
//	        ProcessEngine processEngine = ProcessEngineConfiguration 
//	          .createStandaloneProcessEngineConfiguration() 
//	          .buildProcessEngine(); 
	    	
	      //创建一个流程引擎对象(为了便于多册测试,修改 name="databaseSchemaUpdate" value="create-drop"  默认为ture)
	        ProcessEngine processEngine=ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml").buildProcessEngine();
	        
	         
	        // Get Activiti services 
	        //获取流程相关的服务
	        RepositoryService repositoryService = processEngine.getRepositoryService(); 
	        RuntimeService runtimeService = processEngine.getRuntimeService(); 
	         
	        // Deploy the process definition 
	        //部署相关的流程配置
	        repositoryService.createDeployment() 
	          .addClasspathResource("diagrams/financialReport.bpmn20.xml") 
	          .deploy(); 
	         
	        // Start a process instance 
	        //获取流程实例
	        String procId = runtimeService.startProcessInstanceByKey("financialReport").getId(); 
	         
	        // Get the first task 
	        TaskService taskService = processEngine.getTaskService(); 
	        //获取accountancy组可能要操作的任务
	        List<Task> tasks = taskService.createTaskQuery().taskCandidateGroup("accountancy").list(); 
	        for (Task task : tasks) { 
	          System.out.println("Following task is available for accountancy group: " + task.getName()); 
	           
	          //设置fozzie代办 claim it 
	          taskService.claim(task.getId(), "fozzie"); 
	        } 
	         
	        // Verify Fozzie can now retrieve the task 
	        //审核fozzie当前的获取的任务数量
	        tasks = taskService.createTaskQuery().taskAssignee("fozzie").list(); 
	        for (Task task : tasks) { 
	          System.out.println("Task for fozzie: " + task.getName()); 
	           
	          // Complete the task 
	          //设置forzze完毕
	          taskService.complete(task.getId()); 
	        } 
	         
	        System.out.println("Number of tasks for fozzie: "  
	                + taskService.createTaskQuery().taskAssignee("fozzie").count()); 
	         
	        // Retrieve and claim the second task 
	        //管理者审核报告并让kermit代办
	        tasks = taskService.createTaskQuery().taskCandidateGroup("management").list(); 
	        for (Task task : tasks) { 
	          System.out.println("Following task is available for accountancy group: " + task.getName()); 
	          taskService.claim(task.getId(), "kermit"); 
	        } 
	        
	        // Completing the second task ends the process 
	        //完成报告
	        for (Task task : tasks) { 
	          taskService.complete(task.getId()); 
	        } 
	         
	        // verify that the process is actually finished 
	        //查询流程实例完成事件
	        HistoryService historyService = processEngine.getHistoryService(); 
	        HistoricProcessInstance historicProcessInstance =  
	          historyService.createHistoricProcessInstanceQuery().processInstanceId(procId).singleResult(); 
	        System.out.println("Process instance end time: " + historicProcessInstance.getEndTime()); 
	      } 
	     
	    }



 

 

运行结果如下:

信息: ProcessEngine default created
2011-12-18 17:06:00 org.activiti.engine.impl.jobexecutor.JobAcquisitionThread run
信息: JobAcquisitionThread starting to acquire jobs
2011-12-18 17:06:00 org.activiti.engine.impl.bpmn.deployer.BpmnDeployer deploy
信息: Processing resource diagrams/financialReport.bpmn20.xml
2011-12-18 17:06:01 org.activiti.engine.impl.bpmn.parser.BpmnParse parseDefinitionsAttributes
信息: XMLSchema currently not supported as typeLanguage
2011-12-18 17:06:01 org.activiti.engine.impl.bpmn.parser.BpmnParse parseDefinitionsAttributes
信息: XPath currently not supported as expressionLanguage
Following task is available for accountancy group: 财务编写月财务报告
Task for fozzie: 财务编写月财务报告
Number of tasks for fozzie: 0
Following task is available for accountancy group: 股东审核月财务审计报告
Process instance end time: Sun Dec 18 17:06:01 CST 2011

 

 

 

 

 

 

分享到:
评论
2 楼 longgangbai 2013-09-21  
pyzheng 写道
我行问问,你的activiti版本是多少,就是你这些总结对应的版本。谢谢...

不太清楚了,忘记了,好像activiti5.6吧..
1 楼 pyzheng 2013-09-15  
我行问问,你的activiti版本是多少,就是你这些总结对应的版本。谢谢...

相关推荐

Global site tag (gtag.js) - Google Analytics