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

时间:2024.4.2

根据activiti官方提供的 编写

1.财务部门填写月财务报告

2.股东审核月财务审计报告

流程图:

流程配置:

<;?xml version=";1.0"; encoding=";UTF-8";?>;

<;definitions xmlns=";/spec/BPMN/20100524/MODEL"; xmlns:xsi=";/2001/XMLSchema-instance";

xmlns:activiti=";http://activiti.org/bpmn";

xmlns:bpmndi=";/spec/BPMN/20100524/DI";

xmlns:omgdc=";/spec/DD/20100524/DC";

xmlns:omgdi=";/spec/DD/20100524/DI";

typeLanguage=";/2001/XMLSchema";

expressionLanguage=";/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

更多相关推荐:
工作流Activiti的学习总结(三) activit数据库限制和数据库相关的配置

工作流Activiti的学习总结三activit数据库限制和数据库相关的配置数据库相关的配置在activiti中的持久化框架采用Ibatis3实现有两种方式定义activiti的数据库1通过jdbcproper...

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

工作流Activiti的学习总结五activiti的API和虚拟工作流测试activiti的API在activiti引擎中你可以通过多种方式获取ProcessEngine对象从ProcessEngine中获取各...

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

工作流activiti自动执行任务的开发应用工作流模拟某公司请假流程情景如下1开发人员请假流程如果开发人员请假如果请假天数小于3天组长批准人事批准即可请假2如果请假大约三天需要项目经理或者产品经理批准并且项目总...

工作流Activiti的学习总结(十一)Activiti5.6和Spring3.03整合

工作流模拟程序员面试过程情景如下1开发知识面试或者笔试2人事面试流程图流程配置Xml代码1ltxmlversionquot10quotencodingquotUTF8quotgt2ltdefinitionsxm...

工作流Activiti的学习总结(四)Spring和Activiti的整合配置讲解

工作流Activiti的学习总结(四)Spring和Activiti的整合配置讲解Spring和Activiti的整合:在Spring和Activiti的整合中ProcessEngineFactoryBean成…

工作流Activiti的学习总结(二)activiti中ProcessEngine的创建和数据库表命名规则

工作流Activiti的学习总结(二)activiti中ProcessEngine的创建和数据库表命名规则数据库表命名规则:Activiti工作流引擎的数据库表中的表名称都是以ACT_.第二部分两个字母表示表的…

activiti学习笔记:Activiti工作流教程 Activiti5 流程实例

activiti学习笔记Activiti工作流教程Activiti5流程实例觉得activiti设计得简单而强大尝试翻译一下他的10分钟入门指南10分钟入门指南通过一个非常简单的业务流程介绍一些基本的Activ...

工作流Activiti的学习总结(六)Antiviti的安装详细过程

工作流Activiti的学习总结六Antiviti的安装详细过程activiti56的安装项目中采用最新的Activiti版本为56GA的activitiREST方式访问相关的RESTWebService服务a...

开源工作流activiti使用手册

开源工作流ACTIVITI使用手册阿凡提集团信息部第1页共8页目录开源工作流ACTIVITI1使用手册1第一章ACTIVITI5安装步骤211ACTIVITI安装先决条件312ACTIVITI安装步骤3121解...

activiti入门教程-基于Activiti5工作流实战企业协同OA办公系统

基于Activiti5工作流实战企业协同OA办公系统springdatajpauur前台组件一本课程是怎么样的一门课程全面介绍11课程的背景该课程的需求和设计来源于协同公司的OA办公系统从OA系统的需求分析数据...

Activiti工作流引擎数据库表结构

Activiti工作流引擎数据库表结构数据库表的命名Acitiviti数据库中表的命名都是以ACT开头的第二部分是一个两个字符用例表的标识此用例大体与服务API是匹配的1ACTRERE表示repository带...

用activiti 工作流 实现简单的请假 附带源码

用activiti工作流实现简单的请假附带源码用activiti工作流实现简单的请假附带源码新建一个Maven项目项目结构pomxmlhtmlviewplaincopy1ltspangtprojectxmlns...

工作流activiti的学习总结(15篇)