activiti5第一弹-----基本的activiti示例


建立一个普通的javaSE工程,工程的目录结构如下:

需要的jar包如下:

在config文件夹下创建log4j.properties用来输入日志,内容如下:

log4j.rootLogger=INFO, CA
# ConsoleAppender
log4j.appender.CA=org.apache.log4j.ConsoleAppender
log4j.appender.CA.layout=org.apache.log4j.PatternLayout
log4j.appender.CA.layout.ConversionPattern= %d{hh:mm:ss,SSS} [%t] %-5p %c %x - %m%n

在config文件夹下创建activiti.cfg.xml(每个框架都有自己的配置文件,在没有使用spring托管框架的时候,这个配置文件管理框架的全部配置),内容如下

<?xml version="1.0"?>
<beans default-lazy-init="false"xsi:schemaLocation=" http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jee="http://www.springframework.org/schema/jee"xmlns:util="http://www.springframework.org/schema/util" xmlns:context="http://www.springframework.org/schema/context"xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://www.springframework.org/schema/beans"><beanclass="org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration"id="processEngineConfiguration">
<span style="white-space:pre">		</span><!--配置数据库信息,这里使用mysql 但是测试时推荐使用h2数据库 见activiti自带的demo中的配置文件<span style="font-family: Arial, Helvetica, sans-serif;">--></span>
		<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activi" /><property name="jdbcDriver" value="com.mysql.jdbc.Driver" /><property name="jdbcUsername" value="root" /><property name="jdbcPassword" value="root" />
<span style="white-space:pre">		</span><!--当表结构不存在时,生成activiti的23个表--><property name="databaseSchemaUpdate" value="true" />
<span style="white-space:pre">		</span><!--工作流转--><property name="jobExecutorActivate" value="true" /><!--邮件-->
<span style="white-space:pre">		</span><property name="mailServerHost" value="mail.my-corp.com" /><property name="mailServerPort" value="5025" /><!--历史-->
<span style="white-space:pre">		</span><property name="history" value="full"></property></bean>
</beans>

progress文件夹下建立我们的流程定义,右键选择new-----other---------Activiti Diagram(之前需要安装eclipse的activiti插件,推荐在线安装---Name: Activiti BPMN 2.0 designer     Location: http://activiti.org/designer/update/)

建立如下的流程定义

该流程右键选择xml打开方式,可以得到流程的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="myProcess" name="My process" isExecutable="true"><startEvent id="startevent1" name="Start"></startEvent><userTask id="usertask1" name="User Task"></userTask><sequenceFlow id="flow1" sourceRef="startevent1" targetRef="usertask1"></sequenceFlow><endEvent id="endevent1" name="End"></endEvent><sequenceFlow id="flow2" sourceRef="usertask1" 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="140.0" y="180.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="usertask1" id="BPMNShape_usertask1"><omgdc:Bounds height="55.0" width="105.0" x="220.0" y="170.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="endevent1" id="BPMNShape_endevent1"><omgdc:Bounds height="35.0" width="35.0" x="370.0" y="180.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNEdge bpmnElement="flow1" id="BPMNEdge_flow1"><omgdi:waypoint x="175.0" y="197.0"></omgdi:waypoint><omgdi:waypoint x="220.0" y="197.0"></omgdi:waypoint></bpmndi:BPMNEdge><bpmndi:BPMNEdge bpmnElement="flow2" id="BPMNEdge_flow2"><omgdi:waypoint x="325.0" y="197.0"></omgdi:waypoint><omgdi:waypoint x="370.0" y="197.0"></omgdi:waypoint></bpmndi:BPMNEdge></bpmndi:BPMNPlane></bpmndi:BPMNDiagram>
</definitions>

可以得到流程的id为 myProcess,当然这是默认的,你可以随意修改.

最后就可以编写测试类来测试这个流程了

package activiti_001;import junit.framework.Assert;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.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.junit.Test;public class MyProcessTest {@Testpublic void test() {// 通过默认的资源获得流程引擎的配置信息(默认的--当然就是activiti.cfg.xml 了)ProcessEngineConfiguration configuration = ProcessEngineConfiguration.createProcessEngineConfigurationFromResourceDefault();// 通过配置信息获得流程引擎ProcessEngine processEngine = configuration.buildProcessEngine();// 流程引擎是activiti的核心,也就是activiti的门户,通过它可以获得各种服务。// 获得部署服务RepositoryService repositoryService = processEngine.getRepositoryService();// 获得运行时服务RuntimeService runtimeService = processEngine.getRuntimeService();// 获得任务服务TaskService taskService = processEngine.getTaskService();// 部署我们定义的流程repositoryService.createDeployment().addClasspathResource("MyProcess.bpmn").deploy();// 启动定义的流程 一定要使用BYKEYProcessInstance instance = runtimeService.startProcessInstanceByKey("myProcess");// 通过任务服务来查询任务Task task = taskService.createTaskQuery().singleResult();// 断言任务的名称System.out.println(task.getName());Assert.assertTrue("User Task".equals(task.getName()));// 完成任务(因为这是一个用户任务,所以需要模拟完成一下)taskService.complete(task.getId());task = taskService.createTaskQuery().singleResult();// 流程结束}}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/569349.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

activiti5第二弹----使用activiti5提供的测试类进行测试

在前文的基础上改变测试方式 package activiti_001;import org.activiti.engine.impl.test.PluggableActivitiTestCase; import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.task.Task; import org.activiti.engine.test.Deployment; import org…

Android在布局XML中的空格转义符(占位符)

普通的英文半角空格 &#xA0; no-break space &#xff08;普通的英文半角空格但不换行&#xff09; 中文全角空格 &#xff08;一个中文宽度&#xff09; &ensp; en空格 &#xff08;半个中文宽度&#xff09; &emsp; em空格 &#xff08;一个中文宽…

activiti5第三弹-----------脚本任务

首先是流程定义图&#xff1a; 重点关注一下流程节点中 Script Task 节点的 properties中的Main config 这里可以选择不同的脚本语言&#xff0c;由于其他的部怎么会就用javascript来吧。 从图中可以看出只是定义了一个变量x&#xff0c;它的值为 a; 很多人都说这样定义了这个…

Jmeter之性能测试类型

Jmeter之性能测试类型 pipe-clean test在测试环境预先跑确定脚本准确性单用户跑获取baseline容量测试经典的性能测试类型获取系统稳定运行时最大的吞吐量/并发数/响应时间时尽量模拟真实情况&#xff0c;比如加入用户思考时间等压力测试把系统弄挂除非系统无响应&#xff0c;响…

activiti5第四弹----serviceTask中的java服务任务

activiti.cfg.xml内容&#xff1a; <?xml version"1.0"?> <beans default-lazy-init"false"xsi:schemaLocation" http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd http://ww…

1 ~ express ~ 初始化。安装第三方模块express。中间件

一&#xff0c;初始化 二&#xff0c;安装第三方模块express 三&#xff0c;安装中间件 1&#xff0c;bodyParser : 解析 post 请求数据 2&#xff0c;cookies : 读写 cookie 3&#xff0c;swig &#xff1a;模板解析引擎 4&#xff0c;mongoose &#xff1a; 操作 mongodb 数据…

activiti5第五弹 serviceTask中的webserviceTask 以及 shellTask

web service task是BPMN2.0中的一种任务类型&#xff0c;在activiti5中它并没有专门的标签表示&#xff0c;而是使用了service task 来表示。而且有很多要配置的内容是无法用图形化工具来完成的。要使用web service task&#xff0c;当然要先有web service。所以首先要编写一个…

bloc

示例分为两个文件 main.dart import package:flutter/material.dart;import bloc.dart;void main()>runApp(MyApp());class MyApp extends StatelessWidget { override Widget build(BuildContext context) { return MaterialApp( home: HomePage(), ); }}cla…

activiti5第六弹 手动任务、接收任务、邮件任务

手动任务和接收任务几乎不在程序中做什么事情---只是在流程的历史中留下一点痕迹&#xff0c;表明流程是走过某些节点的。。。而且这两个任务是无法用taskservice查询到的 但是接收任务比手动任务多一个功能&#xff0c;就是确认功能。。。 activiti.cfg.xml配置 <?xml v…

手把手教你用原始方式上传项目至GitHub

小编GitHub&#xff1a;https://github.com/ds1889 首先你得注册一个自己的GitHub账号&#xff0c;注册网址&#xff1a;https://github.com/join 有了自己的账号以后&#xff0c;就可以进行登录&#xff0c;开始创建一个新的项目 创建一个新的项目&#xff0c;填写项目名称&am…

office如何快速删除重复数据

1、首先打开如下文档&#xff0c;在A列删除重复日期星期一&#xff0c;星期二&#xff1b; 2、选中编号栏&#xff0c;&#xff21;1-&#xff21;10&#xff0c;如下图: 3、点击数据——删除重复项&#xff1b;如下图红色剪头所指: 4、删除后&#xff0c;重复项就被删除成功。…

亲依止缘

前前诸善法对后后诸善法以亲依止缘为缘。前前诸善法对后后诸不善法有时以亲依止缘为缘。前前诸善法对后后诸无记法以亲依止缘为缘。 前前诸不善法对后后诸不善法以亲依止缘为缘。前前诸不善法对后后诸善法有时以亲依止缘为缘。前前诸不善法对后后诸无记法以亲依止缘为缘。 前前…

Activiti5第七弹,自己实现一个ProcessEngineConfiguration同时自定义拦截器

首先是我自己定义的MyProcessEngineConfiguration的activiti.cfg.xml文件的内容 <?xml version"1.0"?> <beans default-lazy-init"false"xsi:schemaLocation" http://www.springframework.org/schema/util http://www.springframework.org…

SQL中and和or的区别是?

今天有这样得一个需求&#xff0c;如果登陆人是客服的话&#xff0c;会查询订单是’该客服’以及还没有匹配客服的&#xff0c;刚开始想的是直接在sql语句上拼写 or assigned_id is null 的&#xff0c;测试了一下发现这样的话&#xff0c;前面的其他条件都没有用了 这样的话…

Java编程设计---数组Arrays

数组的的定义 数组是存放在连续存储空间的元素集合 数组定义的格式&#xff1a; int[] arrnew int[5]; int&#xff1a;数组元素的数据类型&#xff0c;可以是基本数据类型&#xff0c;也可以是引用 arr&#xff1a;数组名称 5&#xff1a;数组中元素个数 第一步&#xff1a;定…

装饰器模式 decorator

所有的说明和解释都在代码中有注释来标明 package mode.decorator;/*** * 这里定义一个接口&#xff0c;在接口中定义我们要执行的操作。* * 以后所有的装饰器以及我们要装饰的对象都要实现这个接口。有了这样的大前提&#xff0c;我们就可以其用 Sourcable来定义我们的装饰器和…

bzoj1176: [Balkan2007]Mokia cdq

链接 bzoj 思路 cdq入门题&#xff0c;拆成4个矩阵&#xff0c;然后cdq。 代码 /**************************************************************Problem: 1176User: gryz2016Language: CResult: AcceptedTime:2652 msMemory:13012 kb *************************************…

桥接模式(Bridge)

桥接模式&#xff0c;就是把向多个方向发展的变化由继承的实现变为了耦合的实现。 package mode.bridge.test;/*** * 首先是一个抽象的咖啡类&#xff0c;有一个抽象的倒咖啡的方法* * 在这个类中有一个咖啡伴侣的属性&#xff0c;为什么会有这个属性。因为我们在冲咖啡的时候可…

python 中的if else 和in

python中if else 和in的用法php python a3 //python中‘:’是引入一个缩进的代码块 if a1:print(1) elif a3:print(3) else:print("查不到") python中的in 查看一个对象是否在另一个对象中 a[1,2,3,4,5,6] b3 if b in a:print("b在a中") else: 转载于:http…

15年1月的每天小程序

package everyworkdayprogramming._2015_1_04;public class Java_1_4 {/*** * * 打印出所有的水仙花数&#xff0c;所谓水仙花数是指一个三位数&#xff0c;其各位数字立方和等于该数本身。* * */public static void main(String[] args) {int bit 0, ten 0, hun 0;for (int…