`
longgangbai
  • 浏览: 7371343 次
  • 性别: 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版本是多少,就是你这些总结对应的版本。谢谢...

相关推荐

    工作流Activiti5学习总结

    【工作流Activiti5学习总结】 工作流管理系统(Workflow Management System, WfMS)是企业信息化建设中的重要组成部分,它负责协调和管理业务流程。Activiti5是一款开源的工作流引擎,由Alfresco公司开发,它基于...

    工作流activiti学习代码

    工作流Activiti是一种开源的工作流引擎,用于在企业应用程序中实现业务流程自动化。...这个"工作流Activiti学习代码"资源很可能是包含示例代码和数据库初始化脚本,帮助初学者快速上手和理解Activiti的工作流程。

    工作流Activiti的学习总结(八)Activiti自动执行的应用

    标题中的“工作流Activiti的学习总结(八)Activiti自动执行的应用”表明本文将探讨如何在Activiti工作流引擎中实现任务的自动化执行。Activiti是一个开源的工作流和业务流程管理(BPM)系统,广泛应用于企业级应用...

    activiti工作流PPT

    **正文** ...总结来说,了解并熟练掌握Activiti的常用API对于任何希望实现高效工作流管理的开发者都至关重要。通过学习这个PPT,你将能够更好地理解和应用Activiti,从而提升你的业务流程自动化能力。

    activiti工作流学习总结

    ### Activiti工作流学习总结 #### 一、Activiti学习资源汇总 - **官方网站**: 提供了Activiti的最新版本信息、文档和技术支持等。地址为:[http://www.activiti.org/](http://www.activiti.org/) - **下载页面**: ...

    activiti工作流(超详细)

    activiti工作流文档,超详细,从0基础开始入门,包括数据库介绍、核心api等介绍,满足日常开发所需

    Activiti工作流示例Activiti Demo(带完整源码)非常实用

    Activiti是一款开源的工作流引擎,它基于模型驱动的架构(MDA),专为现代企业应用程序设计,用于处理业务流程自动化。这个"Activiti工作流示例Activiti Demo"提供了完整的源代码,帮助开发者深入理解并实际操作...

    开源工作流ACTIVITI使用手册

    开源工作流ACTIVITI是一款基于Java的企业级工作流引擎,它提供...通过学习和实践,用户不仅能理解工作流的基本概念,还能掌握ACTIVITI的安装、配置、开发和维护技巧,从而在实际工作中灵活运用这个工具来优化业务流程。

    Activiti工作流面试相关知识

    Activiti工作流引擎是一款开源的企业级业务流程管理(BPM)和工作流系统,它为组织提供了一种灵活、可扩展的方式来设计、执行和管理业务流程。在面试中,了解Activiti的核心服务对于理解其工作原理和实际应用至关...

    activiti5工作流官方文档汉化版

    activiti5工作流官方文档汉化版activiti5工作流官方文档汉化版

    工作流引擎Activiti使用总结

    工作流引擎Activiti是开源的工作流引擎,这是一份简单的使用总结,希望对大家有用。

    工作流activiti源码案例

    在这个"工作流activiti源码案例"中,我们可以深入学习如何在实际项目中应用Activiti。 1. Activiti概述:Activiti是基于BPMN 2.0标准的轻量级工作流引擎,它支持业务流程建模、执行和监控。BPMN(Business Process ...

    工作流Activiti的学习总结(十)Activiti手动执行的应用(UserTask)

    在本篇博文中,我们将深入探讨工作流引擎Activiti中手动执行任务(UserTask)的应用。Activiti是一款开源的工作流和业务流程管理(BPM)系统,它提供了强大的流程定义、执行和监控能力。在这个学习总结中,我们将专注于...

    Activiti工作流详细讲解完整教程.pdf

    根据提供的文件信息,我们可以深入探讨Activiti工作流框架的相关知识点。 ### Activiti工作流框架概述 Activiti工作流框架是一款由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架。它以其灵活性、易用...

    Activiti工作流教程

    Activiti工作流课程Activiti工作流课程Activiti工作流课程Activiti工作流课程Activiti工作流课程Activiti工作流课程

    工作流activiti-6.0.0.zip

    Activiti 是一个开源的工作流引擎,它主要用于自动化业务流程。这个"工作流activiti-6.0.0.zip"文件包含的是Activiti 6.0.0版本的完整包,通常包括源代码、文档、库文件和其他必要的组件,用于开发和部署基于...

    Activiti工作流学习文件

    ### Activiti工作流实战学习知识点概览 #### 一、工作流与工作流引擎 - **工作流**:指在计算机系统中通过特定的模型表示和实现的工作流程逻辑与规则。这种模型使得文档、信息或任务能够在多个参与者之间按照预定...

    工作流Activiti的学习总结(五) activiti的API和虚拟工作流测试.pdf

    在学习总结(五)中,我们将关注Activiti的API以及虚拟工作流的测试。 1. **ProcessEngine**: ProcessEngine是Activiti的核心组件,它负责管理和执行工作流实例。ProcessEngine对象可以通过`ProcessEngines....

Global site tag (gtag.js) - Google Analytics