50,528
社区成员
发帖
与我相关
我的任务
分享
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="processEngineConfiguration"
class="org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration">
<property name="databaseType" value="mssql"></property>
<property name="jdbcUrl"
value="jdbc:sqlserver://localhost;DatabaseName=activiti" />
<property name="jdbcDriver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
<property name="jdbcUsername" value="sa" />
<property name="jdbcPassword" value="g_lens123" />
<!-- Database configurations -->
<property name="databaseSchemaUpdate" value="true" />
<!-- job executor configurations -->
<property name="jobExecutorActivate" value="false" />
<!-- mail server configurations -->
<property name="mailServerPort" value="5025" />
<!-- history configuration -->
<property name="history" value="full" />
</bean>
</beans>
<?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://www.activiti.org/test">
<process id="helloworldProcess" name="helloworldProcess"
isExecutable="true">
<startEvent id="startevent1" name="Start"></startEvent>
<scriptTask id="scripttask1" name="Hello World Task"
scriptFormat="javascript">
<script>System.out.println("Hello world")</script>
</scriptTask>
<sequenceFlow id="flow1" sourceRef="startevent1"
targetRef="scripttask1"></sequenceFlow>
<userTask id="usertask1" name="用户任务1"></userTask>
<sequenceFlow id="flow2" sourceRef="scripttask1"
targetRef="usertask1"></sequenceFlow>
<endEvent id="endevent1" name="End"></endEvent>
<sequenceFlow id="flow3" sourceRef="usertask1" targetRef="endevent1"></sequenceFlow>
</process>
<bpmndi:BPMNDiagram id="BPMNDiagram_helloworldProcess">
<bpmndi:BPMNPlane bpmnElement="helloworldProcess"
id="BPMNPlane_helloworldProcess">
<bpmndi:BPMNShape bpmnElement="startevent1"
id="BPMNShape_startevent1">
<omgdc:Bounds height="35.0" width="35.0" x="290.0" y="260.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="scripttask1"
id="BPMNShape_scripttask1">
<omgdc:Bounds height="55.0" width="105.0" x="370.0" y="250.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="usertask1" id="BPMNShape_usertask1">
<omgdc:Bounds height="55.0" width="105.0" x="530.0" y="250.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="endevent1" id="BPMNShape_endevent1">
<omgdc:Bounds height="35.0" width="35.0" x="690.0" y="260.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="flow1" id="BPMNEdge_flow1">
<omgdi:waypoint x="325.0" y="277.0"></omgdi:waypoint>
<omgdi:waypoint x="370.0" y="277.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="flow2" id="BPMNEdge_flow2">
<omgdi:waypoint x="475.0" y="277.0"></omgdi:waypoint>
<omgdi:waypoint x="530.0" y="277.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="flow3" id="BPMNEdge_flow3">
<omgdi:waypoint x="635.0" y="277.0"></omgdi:waypoint>
<omgdi:waypoint x="690.0" y="277.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</definitions>
package com.sunyzc.test;
import java.util.List;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
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.repository.DeploymentBuilder;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.activiti.engine.task.TaskQuery;
public class HelloWorldProcessTest {
/**
* @Title: main
* @Description: TODO(这里用一句话描述这个方法的作用)
* @param: @param args
* @return: void
* @throws
* @author Administrator
* @Date 2015-9-28 上午9:09:54
*/
public static void main(String[] args) {
// 创建流程引擎
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// 得到流程存储服务对象
RepositoryService repositoryService = processEngine
.getRepositoryService();
// 创建DeploymentBuilder实例
DeploymentBuilder builder = repositoryService.createDeployment();
// 1,本地资源加载,常用方法(链式写法,同时部署BPMN与PNG)
builder.addClasspathResource("diagrams/HelloWorldProcess.bpmn")
.addClasspathResource("diagrams/HelloWorldProcess.png")
.deploy();
builder.deploy();
RuntimeService runtimeService = processEngine.getRuntimeService();
ProcessInstance processInstance = runtimeService
.startProcessInstanceByKey("helloworldProcess");
TaskService taskService = processEngine.getTaskService();
TaskQuery taskQuery = taskService.createTaskQuery();
List<Task> tasks = taskQuery.taskCandidateGroup("management").list();
System.out.println("用户组management的任务数:" + tasks.size());
for (Task task : tasks) {
// 用户kermit认领任务
taskService.claim(task.getId(), "kermit");
// 执行任务
taskService.complete(task.getId());
System.out.println("用户kermit有任务 " + task.getName() + ",认领并执行!");
}
HistoricProcessInstance historicProcessInstance = processEngine
.getHistoryService().createHistoricProcessInstanceQuery()
.processInstanceId(processInstance.getId()).singleResult();
System.out.println("流程结束时间:" + historicProcessInstance.getEndTime());
processEngine.close();
}
}
Exception in thread "main" java.lang.NullPointerException
at com.sunyzc.test.HelloWorldProcessTest.main(HelloWorldProcessTest.java:32)