根据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