activiti工作流 ProcessEngines.getDefaultProcessEngine()为null

gaojiananlixia 2015-09-29 10:03:49
目录结构

activiti.cfg.xml

<?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>


bpmn文件

<?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)

...全文
1942 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
小小-学徒 2019-01-16
  • 打赏
  • 举报
回复
楼上正解。。
a随心所欲啊 2018-11-26
  • 打赏
  • 举报
回复
兄弟 我只想说你的文件名字写错了 是activiti 不是acitiviti
SU708877595 2018-01-08
  • 打赏
  • 举报
回复
我解决的办法是:配置一下java build path中source就可以了
qq_17848145 2017-07-25
  • 打赏
  • 举报
回复
应该是pom.xml里面的配置,我使用maven创建,导入相关的jar包总是包null,然后创建了一个activiti project,把pom.xml拷贝到之前的maven创建的项目中,发现正常
linuxbigbrian 2017-05-04
  • 打赏
  • 举报
回复
朝花夕拾y 2017-03-01
  • 打赏
  • 举报
回复
在网上找了半天也没有找到解决办法,求指点
wingslijun 2017-01-20
  • 打赏
  • 举报
回复
不集成Spring 如4#手动读取activiti.cfg.xml,创建processEngine。 集成spring 如8# <bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean"> <property name="processEngineConfiguration" ref="processEngineConfiguration" /> </bean> <bean id="repositoryService" factory-bean="processEngine" factory-method="getRepositoryService" /> <bean id="runtimeService" factory-bean="processEngine" factory-method="getRuntimeService" /> <bean id="taskService" factory-bean="processEngine" factory-method="getTaskService" /> <bean id="historyService" factory-bean="processEngine" factory-method="getHistoryService" /> <bean id="managementService" factory-bean="processEngine" factory-method="getManagementService" />
梧桐1993 2017-01-19
  • 打赏
  • 举报
回复
在activiti配置中加上这个试试,应该就好了 <!-- 配置一个流程引擎工厂bean,用于创建流程引擎对象 --> <bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean"> <!-- 通过set方法注入流程引擎配置对象 --> <property name="processEngineConfiguration" ref="processEngineConfiguration" /> </bean>
lgmmd 2017-01-17
  • 打赏
  • 举报
回复
不知道楼主解决了没有啊!
cuishiyang1314 2016-03-10
  • 打赏
  • 举报
回复
resources = classLoader.getResources("activiti.cfg.xml");

看activit生成默认的流程引擎对象 文件名称必须为 activiti.cfg.xml 才能进行读取

  • 打赏
  • 举报
回复
不用通过xml获取 配置吗
wilsonyun 2015-10-21
  • 打赏
  • 举报
回复 1
或者你试试这种方式 ProcessEngine processEngine = ProcessEngineConfiguration.createProcessEngineConfigurationFromResource("activiti.cfg.xml").buildProcessEngine();
gaojiananlixia 2015-10-08
  • 打赏
  • 举报
回复
activiti.cfg.xml为这个文件应该放在classpath目录下 还是java.lang.NullPointerException
wilsonyun 2015-10-04
  • 打赏
  • 举报
回复
activiti.cfg.xml为这个文件应该放在classpath目录下吧,你试试将这个文件放在src目录下,再运行,估计是 ProcessEngines.getDefaultProcessEngine()没找到该文件。
gaojiananlixia 2015-09-29
  • 打赏
  • 举报
回复
JAR
01-课程计划02-Activiti工作流概念(使用程序演示工作流执行)03-Activiti介绍04-准备Activiti开发环境05-准备开发环境(配置文件)和核心API的介绍06-Activiti入门程序HelloWorld演示流程的执行07-流程定义的CRUD(上)08-流程定义的CRUD(下)09-流程实例,任务,执行对象控制流程的执行(上)10-流程实例,任务,执行对象控制流程的执行(下)11-流程变量(上)12-流程变量(下)13-流程历史数据查询14-第一天知识点回顾15-连线16-排他网关17-并行网关18-流程实例开始结束19-接收任务活动(receiveTask)20-个人任务分配(三种方式)21-组任务分配(三种方式)22-工作流提供的用户角色组(IdentityService)23-项目框架搭建(Struts)24-请假流程管理系统框架搭建(Spring+Struts)25-请假流程图26-知识点回顾27-系统登录(Session)28-自定义拦截器实现Session验证29-部署流程定义(zip文件部署)30-流程定义和部署对象查询31-查看流程图和删除流程定义32-请假单业务的查询列表和新增保存33-请假单业务的编辑保存和删除34-申请请假(启动流程实例)35-查找正在执行的个人任务列表36-使用类动态指定下一个任务的办理人37-办理任务(获取任务节点form key中的值)38-办理任务(使用任务ID,查询请假单)39-办理任务(使用任务ID,查询任务完成后的连线名称集合)40-完成任务41-查询办理任务时操作的历史批注信息(上)42-查询办理任务时操作的历史批注信息(下)43-在请假单中查询历史批注信息(使用请假单ID查询)44-查看当前流程图和课程总结

50,452

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧