activiti是一个目前比较流行的工作流引擎。譬如请假流程、财务报销流程等,使用activiti能够大大简化程序的开发。
activiti就是一个jar包,接收一个xml格式的流程定义,简单的配置下,即可使用。
其中MyProcess.bpmn(其实就是个xml)定义我们的流程(使用activiti designer插件):
其xml source为:
<?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="myProcess" name="My process" isExecutable="true">
<startEvent id="startevent1" name="Start"></startEvent>
<scriptTask id="scripttask1" name="Script Task" scriptFormat="groovy" activiti:autoStoreVariables="false">
<script>System.out.println("hahaha")</script>
</scriptTask>
<sequenceFlow id="flow1" sourceRef="startevent1" targetRef="scripttask1"></sequenceFlow>
<userTask id="usertask1" name="请假申请" activiti:candidateGroups="employee"></userTask>
<sequenceFlow id="flow2" sourceRef="scripttask1" targetRef="usertask1"></sequenceFlow>
<userTask id="usertask2" name="领导审批" activiti:candidateGroups="manager"></userTask>
<sequenceFlow id="flow3" sourceRef="usertask1" targetRef="usertask2"></sequenceFlow>
<endEvent id="endevent1" name="End"></endEvent>
<sequenceFlow id="flow4" sourceRef="usertask2" targetRef="endevent1"></sequenceFlow>
</process>
<bpmndi:BPMNDiagram id="BPMNDiagram_myProcess">
<bpmndi:BPMNPlane bpmnElement="myProcess" id="BPMNPlane_myProcess">
<bpmndi:BPMNShape bpmnElement="startevent1" id="BPMNShape_startevent1">
<omgdc:Bounds height="35.0" width="35.0" x="190.0" y="150.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="scripttask1" id="BPMNShape_scripttask1">
<omgdc:Bounds height="55.0" width="105.0" x="290.0" y="140.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="usertask1" id="BPMNShape_usertask1">
<omgdc:Bounds height="55.0" width="105.0" x="440.0" y="140.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="usertask2" id="BPMNShape_usertask2">
<omgdc:Bounds height="55.0" width="105.0" x="590.0" y="140.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="endevent1" id="BPMNShape_endevent1">
<omgdc:Bounds height="35.0" width="35.0" x="740.0" y="150.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="flow1" id="BPMNEdge_flow1">
<omgdi:waypoint x="225.0" y="167.0"></omgdi:waypoint>
<omgdi:waypoint x="290.0" y="167.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="flow2" id="BPMNEdge_flow2">
<omgdi:waypoint x="395.0" y="167.0"></omgdi:waypoint>
<omgdi:waypoint x="440.0" y="167.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="flow3" id="BPMNEdge_flow3">
<omgdi:waypoint x="545.0" y="167.0"></omgdi:waypoint>
<omgdi:waypoint x="590.0" y="167.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="flow4" id="BPMNEdge_flow4">
<omgdi:waypoint x="695.0" y="167.0"></omgdi:waypoint>
<omgdi:waypoint x="740.0" y="167.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</definitions>
工程中的activiti.cfg.xml为整个activiti的配置文件,主要还是配置数据库
<?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.StandaloneProcessEngineConfiguration">
<property name="databaseType" value="h2" />
<!-- <property name="jdbcUrl" value="jdbc:h2:~/activiti;DB_CLOSE_DELAY=1000"
/> -->
<property name="jdbcUrl" value="jdbc:h2:mem:activiti;DB_CLOSE_DELAY=1000" />
<property name="jdbcDriver" value="org.h2.Driver" />
<property name="jdbcUsername" value="sa" />
<property name="jdbcPassword" value="" />
<property name="databaseSchemaUpdate" value="true" />
<property name="jobExecutorActivate" value="false" />
<property name="mailServerHost" value="mail.my-corp.com" />
<property name="mailServerPort" value="5025" />
</bean>
</beans>
这里面使用了默认的h2database,jdbc:h2:mem:activiti表示使用内存数据库,即程序运行完毕,流程数据将不保存;而注释掉的那行jdbc:h2:~/activiti意味着将数据库文件保存在默认的目录。
测试下activiti
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.repository.DeploymentBuilder;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
public class ActivitiTest {
public static void main(String[] args){
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
RepositoryService repositoryService = processEngine.getRepositoryService();
TaskService taskService = processEngine.getTaskService();
DeploymentBuilder builder = repositoryService.createDeployment();
builder.addClasspathResource("diagrams/MyProcess.bpmn");
builder.deploy();
RuntimeService runtimeService = processEngine.getRuntimeService();
String piid = runtimeService.startProcessInstanceByKey("myProcess").getProcessInstanceId();//启动流程
Task task = taskService.createTaskQuery().processInstanceId(piid).singleResult();//拿到刚启动流程执行到的第一个任务
taskService.delegateTask(task.getId(), "lucy");//将此任务分配给lucy
Task task2 = taskService.createTaskQuery().processInstanceId(piid).singleResult();
System.out.println(task2.getAssignee());
List<Task> tasks = taskService.createTaskQuery().taskAssignee("lucy").list();//查询lucy的所有任务
System.out.println("ok......"+tasks.size());
}
}
可见,activiti还是非常轻量级的,也易于集成至web系统。
- 大小: 111.7 KB
- 大小: 30.6 KB
分享到:
相关推荐
### Activiti开发环境搭建知识点详解 #### 一、概述 在构建Activiti开发环境的过程中,开发者往往会遇到多种挑战。为了确保整个开发流程顺利进行,有必要按照详细的步骤来配置开发环境。本文档旨在提供一套完整的...
但开源一直为activiti和JBPM所垄断,相对来说acticiti更为灵活,但目前国内关于activiti的资料还是比较少,或几乎没有,而本书无疑是activiti工作流的新手入门答疑书籍,本书籍包括activiti环境搭建,基于B/S流程...
Activiti环境搭建及其他插件工作流管理联盟(WfMC,Workflow Management Coalition)给出的关于工作流管理系统的定义是:工作流管理系统是一个软件系统,它通过执行经过计算的流程定义去支持一批专门设定的业务流程。...
本章节主要涉及Activiti的环境搭建和核心API的初步认识,帮助开发者开始Activiti的学习之旅。 首先,搭建Activiti环境需要以下几个步骤: 1. 从官方网站下载Activiti的框架包。 2. 集成Activiti到你的工程中。这...
### Activiti环境搭建完整教程 #### 一、Activiti简介 Activiti是由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架。该框架覆盖了业务流程管理、工作流、服务协作等多个领域,是一个开源、灵活且易于...
Activiti开发环境搭建过程详解 Activiti是基于Java的开源工作流引擎,旨在简化业务流程自动化的开发。为搭建Activiti开发环境,需要安装和配置相关组件。本文将详细介绍Activiti开发环境的搭建过程,包括创建Maven...
通过以上步骤,我们就完成了Spring Boot与Activiti的集成环境搭建。下载提供的`springboot-activiti-test`压缩包,解压后可以查看示例项目的具体实现,包括配置文件、Java代码和流程定义文件。这将帮助你更好地理解...
【Java】Activiti入门 —环境搭建和核心API简介 Activiti是一个开源的工作流和业务流程管理(BPM)框架,主要用于构建可扩展且灵活的业务应用。本篇文章将介绍如何搭建Activiti开发环境,并简要概述其核心API的使用。...
1. **项目环境**:确保使用的是Maven项目,JDK版本为1.8,数据库选择为activiti_oa。 2. **项目架构**: - 使用IntelliJ IDEA创建SpringMVC项目。 - 配置`pom.xml`文件,引入Spring、SpringMVC、MyBatis以及...
将 Activiti 集成到 SpringBoot 中,可以方便地在微服务环境中实现业务流程自动化。 **一、Activiti 简介** Activiti 是一个轻量级、灵活且开源的 BPMN 2.0 实现,支持业务流程建模、执行和管理。BPMN(Business ...
这个"Activiti已搭好的环境"指的是一个已经配置完成并可以立即使用的开发或运行环境,它包括了所有必要的组件和设置,以便开发者能够快速开始使用Activiti进行流程自动化。 在深入探讨Activiti的知识点之前,我们先...
在“activiti+flex”项目搭建中,我们将结合这两者来构建一个具有强大后台流程管理和直观前端展示的系统。 首先,让我们详细了解一下 Activiti。Activiti 是基于 BPMN 2.0 标准的,这意味着它可以处理复杂的业务...
Activiti Workflow HelloWorld示例与测试环境搭建的知识点主要包括以下几个方面: 1. Activiti工作流引擎简介: Activiti是一个开源的工作流和业务流程管理(BPM)平台,遵循Apache许可证,基于BPMN2.0标准。...
【Activiti Workflow HelloWorld 示例与测试环境搭建】 Activiti是一个开源的工作流引擎,它遵循BPMN 2.0标准,由Alfresco公司发起,旨在提供一个基于Apache License的流程管理解决方案。在Alfresco 4.0之后,...
**环境搭建步骤** 1. **添加依赖** 在`pom.xml`文件中,你需要引入SpringBoot Web Starter、Activiti Spring Boot Starter Basic、JDBC Starter以及MySQL驱动。这些依赖使得SpringBoot能够启动Web服务,Activiti...
本篇文档将详细介绍如何部署和搭建Activiti Server,尤其适合初学者。 首先,理解Activiti的两种部署方式至关重要。一种是将Activiti的jar包直接耦合到项目中,这种方式简单快捷,适用于小型项目。但当多个项目都...
《Activiti实战》 一共四个部分:准备篇(1~2章)介绍了Activiti的概念、特点、应用、体系结构,以及开发环境的搭建和配置;基础篇(3~4章)首先讲解了Activiti Modeler、Activiti Designer两种流程设计工具的详细...
基于Activiti流程管理系统界面框架搭建的知识点可以分为以下几个方面进行详细阐述: 1. Maven项目创建与配置: - Maven是一个项目管理和自动化构建工具,使用Maven创建项目意味着将遵循项目对象模型(POM)的约定...