Activiti5 工作流的Helloworld的感悟(比较详细)
来源:互联网 发布:python 条码 编辑:程序博客网 时间:2024/05/21 15:43
Activiti5,相信做过OA系统的对它不陌生。这次数据库使用的是Mysql和Activiti使用的版本是5.15,具体如何安装请参考:《Activiti5.16用户手册》----12. Eclipse Designer(安装跟版本没有什么大的改变)http://www.mossle.com/docs/activiti/
首先我们在写代码前:
切换到Java的角度,创建一个Java项目(这里叫activiti1)然后打开Java Build Path,参考以下图进行更改:
再写代码前:先写一个环境的测试demo(记得要导入需要的jar包):
jar包:
import org.activiti.engine.ProcessEngine;import org.activiti.engine.ProcessEngineConfiguration;import org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration;import org.junit.Test;public class TestEnv {//搭建环境(创建流程引擎配置对象)StandaloneProcessEngineConfiguration A;@Testpublic void test() {// 1.创建流程引擎配置对象ProcessEngineConfiguration configuration = ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration();// 2.完善数据库相关配置configuration.setJdbcDriver("com.mysql.jdbc.Driver");configuration.setJdbcUrl("jdbc:mysql:///activiti1?createDatabaseIfNotExist=true");configuration.setJdbcUsername("root");configuration.setJdbcPassword("");// 设置数据库建表策略,默认为falseconfiguration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);// 3.使用配置对象创建ProcessEngineProcessEngine processEngine = configuration.buildProcessEngine();}}----------------------------------------------------------------------------------------------------------------------------------------------------------
现在来写第一个HelloWorld
①上面写的环境测试的数据库相关配置其实可以写到一个配置文件(activiti.cfg.xml)中
activiti.cfg.xml:
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"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.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.5.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"><!-- <bean id="processEngineConfiguration" class="org.activiti.engine.ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration"> --><bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"><!-- 数据库连接配置 --><property name="jdbcDriver" value="com.mysql.jdbc.Driver"></property><property name="jdbcUrl" value="jdbc:mysql:///activiti1?createDatabaseIfNotExist=true"></property><property name="jdbcUsername" value="root"></property><property name="jdbcPassword" value=""></property><!-- 建表策略 --><property name="databaseSchemaUpdate" value="true"></property></bean></beans>
②在看流程图前首先要设置让Eclipse保存PNG图片:(如果看不到Activiti麻烦你检查是否成功):
将“Create Process definition image when saving the diagram”勾上
③参考图片建立相应的文件:
与其相对应的xml文件:
helloWorld.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> <endEvent id="endevent1" name="End"></endEvent> <userTask id="员工请假" name="员工请假" activiti:assignee="张三"></userTask> <sequenceFlow id="flow1" sourceRef="startevent1" targetRef="员工请假"></sequenceFlow> <sequenceFlow id="flow3" sourceRef="员工请假" targetRef="usertask1"></sequenceFlow> <sequenceFlow id="flow4" sourceRef="usertask1" targetRef="endevent1"></sequenceFlow> <userTask id="usertask1" name="老板审批" activiti:assignee="老板"></userTask> </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="270.0" y="130.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="endevent1" id="BPMNShape_endevent1"> <omgdc:Bounds height="35.0" width="35.0" x="270.0" y="450.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="员工请假" id="BPMNShape_员工请假"> <omgdc:Bounds height="55.0" width="105.0" x="235.0" y="200.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="usertask1" id="BPMNShape_usertask1"> <omgdc:Bounds height="55.0" width="105.0" x="235.0" y="320.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNEdge bpmnElement="flow1" id="BPMNEdge_flow1"> <omgdi:waypoint x="287.0" y="165.0"></omgdi:waypoint> <omgdi:waypoint x="287.0" y="200.0"></omgdi:waypoint> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="flow3" id="BPMNEdge_flow3"> <omgdi:waypoint x="287.0" y="255.0"></omgdi:waypoint> <omgdi:waypoint x="287.0" y="320.0"></omgdi:waypoint> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="flow4" id="BPMNEdge_flow4"> <omgdi:waypoint x="287.0" y="375.0"></omgdi:waypoint> <omgdi:waypoint x="287.0" y="450.0"></omgdi:waypoint> </bpmndi:BPMNEdge> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram></definitions>红色圈起来的比较重要,需要人工填写的:
④HelloWorld的测试代码:(初次使用可将3.查看任务和4.办理任务注释掉)
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.task.Task;import org.junit.Test;public class HelloWorld {// 1.发布流程规则@Testpublic void deployFlow() throws Exception {// 创建测试环境(创建核心ProcessEngine,监测环境搭建是否正确)ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();RepositoryService repositoryService = processEngine.getRepositoryService();DeploymentBuilder builder = repositoryService.createDeployment();builder.addClasspathResource("helloworld.bpmn").addClasspathResource("helloworld.png");builder.deploy();}// 2.启动流程实例@Testpublic void startFlow() throws Exception {ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();RuntimeService runtimeService = processEngine.getRuntimeService();runtimeService.startProcessInstanceByKey("myProcess");}// 3.查看任务@Testpublic void quertTask() {ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();TaskService taskService = processEngine.getTaskService();String userId = "张三";List<Task> tasks = taskService.createTaskQuery().taskAssignee(userId).list();for (Task task : tasks) {System.out.println("Id:" + task.getId() + ",name:" + task.getName()+ ",assignee:" + task.getAssignee() + ",createTime:"+ task.getCreateTime());}}//4.办理任务@Testpublic void completeTask() throws Exception{ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();TaskService taskService = processEngine.getTaskService();String taskId="204";taskService.complete(taskId);}}
如果你在创建的数据库(activiti1)中看到如下图的表:证明你已经成功了:
相关工程的代码下载地址:
http://download.csdn.net/detail/u011487470/7748047
0 0
- Activiti5 工作流的Helloworld的感悟(比较详细)
- activiti5 工作流的入门
- 工作流Activiti5表的命名规范
- activiti5 工作流的回退功能
- activiti5工作流(二)
- activiti5工作流(三)
- activiti5工作流(四)
- 工作流Activiti的学习总结(十一)Activiti5.6和Spring3.03整合
- 工作流引擎的改革:从 jBPM3 到 jBPM5 以及 Activiti5
- jBPM5 vs Activiti5? dumb question? jBPM5 与 Activiti5孰胜孰劣? 难以比较的问题?
- Activiti5工作流 笔记(1)--环境
- activiti5.20简单介绍(四) -- helloworld
- Activiti5工作流 笔记(2)--创建工作流引擎
- 四种工作流的比较
- Activiti5基于jBPM4的开源工作流系统10分钟入门指南
- Activiti5.22:删除工作流引擎自动创建的外键约束
- Activiti5工作流引擎
- Activiti5工作流(一)
- 并查集——《畅通工程》
- eclipse安装Memory Analyzer
- linux命令2——不常用命令
- 【Wikioi】1116四色问题
- 单例模式应用场景:
- Activiti5 工作流的Helloworld的感悟(比较详细)
- 动态删除列表
- Python 正则表达式查询相似的字符串
- struts2的执行原理
- 2014-07-17 innerHTML
- 木箱包角是做什么用的?
- hdoj 2082 找单词 【母函数】
- 【索引】Permutation :: Examples
- 木箱包角是做什么用的