初学activiti,在参考编写流程定义文件后,部署到activiti后,根据流程名称查询流程信息,始终报错:
org.activiti.engine.ActivitiObjectNotFoundException: no processes deployed with key 'helloword' at org.activiti.engine.impl.persistence.deploy.DeploymentManager.findDeployedLatestProcessDefinitionByKey(DeploymentManager.java:125) at org.activiti.engine.impl.cmd.StartProcessInstanceCmd.execute(StartProcessInstanceCmd.java:79) at org.activiti.engine.impl.cmd.StartProcessInstanceCmd.execute(StartProcessInstanceCmd.java:37) at org.activiti.engine.impl.interceptor.CommandInvoker.execute(CommandInvoker.java:24) at org.activiti.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:57) at org.activiti.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:37) at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:40) at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:35) at org.activiti.engine.impl.RuntimeServiceImpl.startProcessInstanceByKey(RuntimeServiceImpl.java:69) at com.feng.test02.Test02Main.start(Test02Main.java:58) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
代码如下:
单元测试类:
@Before
public void before(){
//创建流程引擎
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:com/feng/test02/activiti-config.xml");
ProcessEngineConfiguration config = ctx.getBean( ProcessEngineConfiguration.class);
config.setProcessEngineName("测试流程引擎");
engine = config.buildProcessEngine();
}
@Test
public void build() throws Exception{
//部署流程定义文件
RepositoryService repositoryService = engine.getRepositoryService();
Deployment deployment = repositoryService.createDeployment().addClasspathResource("com/feng/test02/helloword.bpmn.xml").name("helloword").deploy();
//验证已部署流程定义
System.out.println("流程部署ID:"+ deployment.getId());
System.out.println("流程部署Name:"+deployment.getName());
}
/**
* 启动流程实例
*/
@Test
public void start(){
// 启动并获取流程实例
ProcessInstance processInstance= engine.getRuntimeService() // 运行时流程实例Service
.startProcessInstanceByKey("helloword"); // 流程定义表的KEY字段值
System.out.println("流程实例ID:"+processInstance.getId());
System.out.println("流程定义ID:"+processInstance.getProcessDefinitionId());
}
流程定义xml如下:
<?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:xsd="http://www.w3.org/2001/XMLSchema" 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="helloword" name="helloword process" isExecutable="true"> <startEvent id="startevent1" name="Start"></startEvent> <endEvent id="endevent1" name="End"></endEvent> <userTask id="usertask1" name="HelloWorld" activiti:assignee="feng"></userTask> <sequenceFlow id="flow1" sourceRef="startevent1" targetRef="usertask1"></sequenceFlow> <sequenceFlow id="flow2" sourceRef="usertask1" targetRef="endevent1"></sequenceFlow> </process> <bpmndi:BPMNDiagram id="BPMNDiagram_myFirstProcess"> <bpmndi:BPMNPlane bpmnElement="myFirstProcess" id="BPMNPlane_myFirstProcess"> <bpmndi:BPMNShape bpmnElement="startevent1" id="BPMNShape_startevent1"> <omgdc:Bounds height="35.0" width="35.0" x="200.0" y="40.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="endevent1" id="BPMNShape_endevent1"> <omgdc:Bounds height="35.0" width="35.0" x="200.0" y="200.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="usertask1" id="BPMNShape_usertask1"> <omgdc:Bounds height="55.0" width="105.0" x="165.0" y="110.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNEdge bpmnElement="flow1" id="BPMNEdge_flow1"> <omgdi:waypoint x="217.0" y="75.0"></omgdi:waypoint> <omgdi:waypoint x="217.0" y="110.0"></omgdi:waypoint> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="flow2" id="BPMNEdge_flow2"> <omgdi:waypoint x="217.0" y="165.0"></omgdi:waypoint> <omgdi:waypoint x="217.0" y="200.0"></omgdi:waypoint> </bpmndi:BPMNEdge> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram> </definitions>
将流程定义文件名称的bmpn改为 bmpn20即可。
相关推荐
完成部署后,你可以通过 `getId()` 和 `getName()` 获取部署的唯一标识和名称,这些信息对于后续的查询和操作非常有用。 查询流程定义是理解当前系统中已部署的流程的关键。`findProcessDefinition()` 方法演示了...
总结来说,“Activiti学习文档(二)之画流程图并部署流程”会带你走过从设计到实施一个完整流程的整个过程,包括理解BPMN符号、使用工具绘制流程图、编写部署脚本,以及如何在实际环境中运行和管理流程实例。...
Activiti流程部署是Activiti工作流管理系统的核心功能之一,它允许用户将设计好的业务流程定义文件部署到Activiti引擎中,从而使得流程可以被启动和执行。在进行流程部署之前,需要了解与Activiti流程部署相关的知识...
首先,你需要部署流程定义到Activiti Engine。这可以通过调用`RepositoryService.createDeployment()`方法,然后添加流程定义文件,最后调用`deploy()`方法来完成。部署后的流程定义会被存储在数据库中,并分配一个...
在Activiti中,流程定义通过部署到Activiti Engine来生效。部署可以通过API或者使用命令行工具完成。部署后,流程定义会被存储在数据库中,可供后续的流程实例引用。 **五、启动流程实例** 流程定义部署后,可以...
1. **部署流程定义**:在Activiti中,首先需要将`.bpmn`文件部署到Activiti Engine,这将生成流程定义实例。部署可以通过API或者使用管理界面完成。 2. **获取流程图**:部署后,你可以通过Activiti API获取流程...
部署流程意味着将这些XML文件上传到Activiti引擎,使其准备就绪可供执行。这个过程可以通过API或者管理工具完成。 4. 流程启动: 启动请假流程意味着创建一个新的流程实例。这通常由一个触发事件引起,比如员工...
- **资源的自动部署**:自动部署流程定义文件。 - **单元测试**:Spring环境下的单元测试技巧。 - **基于注解的配置**:使用Spring注解进行配置。 - **JPA和Hibernate 4.2.x**:与持久化框架的集成方式。 #### 6. ...
在代码中,我们需要先将流程定义加载到Activiti引擎,然后获取流程实例的历史数据,最后利用图像处理库修改图片,添加高亮效果。 在实际应用中,这两种方式可能会结合使用,以便更全面地展示流程的状态。例如,在...
9. **部署流程**:涉及到将流程定义图部署到Activiti引擎,这一步骤会将流程定义文件解析并保存到数据库中,以便后续的流程实例创建和执行。 以上就是关于Activiti6.0用户手册的主要内容,涵盖了流程定义、实例、...
总结来说,本篇主要介绍了如何在Activiti 7和SpringBoot 2的环境中,通过源码部署流程定义、启动流程实例、查询任务以及完成任务。理解并熟练掌握这些基本操作,是构建高效流程管理系统的基石。在实践中,不断探索和...
5. **部署和执行**:完成设计后,流程定义文件(.bpmn或.bar)会被部署到Activiti引擎,然后就可以启动流程实例。通过Activiti提供的监控工具,可以查看流程实例的状态、跟踪任务和事件,甚至进行干预或调试。 6. *...
1. 获取流程定义列表:该接口返回当前Activiti引擎中的所有流程定义信息,包括流程定义ID、名称、描述等。 2. 获取一个流程定义:该接口根据提供的流程定义ID,返回该流程定义的详细信息。 3. 更新流程定义分类:该...
5. **导出与部署**:完成设计后,可以将流程模型导出为XML文件,并在Activiti引擎中部署执行。 压缩包中的"jeesite"可能是Jeesite框架的一个示例项目,Jeesite是一个开源的Java快速开发平台,集成了Activiti流程...
4. **流程图文件**(.png或.svg):与流程定义文件相对应的可视化流程图,方便理解流程的走向。 5. **Java代码**:作者可能编写了一些Java类来启动流程实例、查询任务、完成任务或者进行其他操作。这些代码展示了...
- **部署流程**:将流程定义XML文件部署到Activiti流程引擎。 - **启动流程实例**:通过Runtime Service启动流程实例,并可能传入初始变量。 - **处理任务**:通过Task Service进行任务的操作,如查询、领取、...
将流程定义文件部署到Activiti引擎,以便可以启动和执行。在Java代码中,你可以通过`RepositoryService`的`deploy()`方法实现部署。 6. **启动流程实例** 部署流程定义后,可以通过调用`RuntimeService`的`...
部署过程将流程定义文件加载到引擎中,使其准备就绪以处理实例。 4. **流程实例(Process Instance)**:当流程被启动时,就会创建一个流程实例。每个实例对应一个具体的流程执行,可以有多个实例同时运行。 5. **...
例如,通过调用`runtimeService.createExecutionQuery().activityId("someActivity").singleResult()`,我们可以获取到当前执行所在的活动,然后通过分析流程定义获取相关顺序流的条件和提示信息。 总之,在...
流程定义的版本管理以及流程图片的自动生成也是部署流程时可能涉及到的功能。 BPMN 2.0是Activiti遵循的核心标准。文档中关于BPMN 2.0的内容涵盖了BPMN的基本概念、结构、事件、任务以及网关等方面。开发者需要掌握...