activiti总结2
根据流程号查询失败原因。
activiti重试机制。齿轮节点、邮件节点、任务节点。ACT_HI_ACTINST历史表。ACT_RU_EXECUTION运行表。看图。
在Eclipse里面自己写个测试方法(main方法,或者junit Test方法)。可以暂时不用管activiti页面上操作的丰富的内容。通过这种方式,在每个结点加上Sleep(60)方法。这样就可以在mysql数据库的act_ru_execution表跟踪到内容。
下面是不使用spring容器的测试activiti的方法。(activitiGuide_NoSpringEnvironment)
/**
*
*/
package main; import java.util.List; import org.apache.ibatis.type.TypeHandler;
import org.activiti.engine.HistoryService;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngineConfiguration;
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.task.Task; /**
* @author Administrator
*
*/
public class TenMinuteTutorial { public static void main(String[] args) { // Create Activiti process engine
ProcessEngine processEngine = ProcessEngineConfiguration
.createStandaloneProcessEngineConfiguration()
.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE)
.setJdbcDriver("com.mysql.jdbc.Driver")
.setJdbcUrl("jdbc:mysql://localhost:3306/activiti")
.setJdbcUsername("root")
.setJdbcPassword("")
.setJobExecutorActivate(false)//ture和false有什么区别
.buildProcessEngine();
/*ProcessEngine processEngine = ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration()
.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_FALSE)
.setJdbcUrl("jdbc:h2:mem:my-own-db;DB_CLOSE_DELAY=1000")
.setJobExecutorActivate(true)
.buildProcessEngine();*/
//ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
// Get Activiti services
RepositoryService repositoryService = processEngine.getRepositoryService();
RuntimeService runtimeService = processEngine.getRuntimeService(); // Deploy the process definition
repositoryService.createDeployment()
.addClasspathResource("resource/FinancialReportProcess.bpmn20.xml")
.deploy(); // Start a process instance
String procId = runtimeService.startProcessInstanceByKey("financialReport").getId(); // Get the first task
TaskService taskService = processEngine.getTaskService();
List<Task> tasks = taskService.createTaskQuery().taskCandidateGroup("accountancy").list();
for (Task task : tasks) {
System.out.println("Following task is available for accountancy group: " + task.getName()); // claim it
taskService.claim(task.getId(), "fozzie");
} // Verify Fozzie can now retrieve the task
tasks = taskService.createTaskQuery().taskAssignee("fozzie").list();
for (Task task : tasks) {
System.out.println("Task for fozzie: " + task.getName()); // Complete the task
taskService.complete(task.getId());
} System.out.println("Number of tasks for fozzie: "
+ taskService.createTaskQuery().taskAssignee("fozzie").count()); // Retrieve and claim the second task
tasks = taskService.createTaskQuery().taskCandidateGroup("management").list();
for (Task task : tasks) {
System.out.println("Following task is available for accountancy group: " + task.getName());
taskService.claim(task.getId(), "kermit");
} // Completing the second task ends the process
for (Task task : tasks) {
taskService.complete(task.getId());
} // verify that the process is actually finished
HistoryService historyService = processEngine.getHistoryService();
HistoricProcessInstance historicProcessInstance =
historyService.createHistoricProcessInstanceQuery().processInstanceId(procId).singleResult();
System.out.println("Process instance end time: " + historicProcessInstance.getEndTime());
} }
.setJobExecutorActivate(false)//ture和false有什么区别
采用spring容器的方式。ProcessEngine processEngine =ProcessEngines.getDefaultProcessEngine();这行代码会自动寻找activiti.cfg.xml。
activiti.cfg.xml里面配置的bean的id为<beanid="processEngineConfiguration",有许多类可以用来定义这个processEngineConfiguration。那么spring容器用哪个类?
org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration
org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration
org.activiti.spring.SpringProcessEngineConfiguration 这个专用于spring环境,其他的类不知道能不能用于spring环境。需要验证。
org.activiti.engine.impl.cfg.JtaProcessEngineConfiguration
如果activiti执行出现异常,会导致以下情况:
act_ru_task表出现多条数据,如下:
1007 1 1004 1004 simpleProcess:3:1003 Write monthly financial report Write monthly financial report for publication to shareholders. writeReportTask 50 2013-10-05 11:49:28
1107 1 1104 1104 simpleProcess:4:1103 Write monthly financial report Write monthly financial report for publication to shareholders. writeReportTask 50 2013-10-05 11:50:03
807 1 804 804 simpleProcess:1:803 Write monthly financial report Write monthly financial report for publication to shareholders. writeReportTask 50 2013-10-05 11:47:53
907 1 904 904 simpleProcess:2:903 Write monthly financial report Write monthly financial report for publication to shareholders. writeReportTask 50 2013-10-05 11:48:43
导致Task task = taskService.createTaskQuery().singleResult();出错,因为查询出来不是一条记录。
正常情况如果执行完成,这张表产生的数据会被清空。出现异常时,数据没有清空。activiti的异常处理机制没有清空数据,不知道是不是activiti的缺陷(不足),是做不到还是没有做到。
深刻理解This will look for an activiti.cfg.xml file on the classpath中的classpath,这个路径对应Eclipse的Build path =》Source=》Default output folder(比如activiti_SpringEnvironment/bin目录),将activiti-context.xml
和activiti.cfg.xml文件。
activiti总结2的更多相关文章
- 流程开发Activiti 与SpringMVC整合实例
流程(Activiti) 流程是完成一系列有序动作的概述.每一个节点动作的结果将对后面的具体操作步骤产生影响.信息化系统中流程的功能完全等同于纸上办公的层级审批,尤其在oa系统中各类电子流提现较为明显 ...
- activiti工作流的web流程设计器整合视频教程 SSM和独立部署
本视频为activiti工作流的web流程设计器整合视频教程 整合Acitiviti在线流程设计器(Activiti-Modeler 5.21.0 官方流程设计器) 本视频共讲了两种整合方式 1. 流 ...
- activiti工作流的web流程设计器整合视频教程 SSM 和 独立部署
本视频为activiti工作流的web流程设计器整合视频教程 整合Acitiviti在线流程设计器(Activiti-Modeler 5.21.0 官方流程设计器) 本视频共讲了两种整合方式 1. 流 ...
- 文档分享-Activiti 5.16 用户手册
今天在翻看工作流相关的网页的时候,在开源中国上http://www.oschina.net/question/915507_149175发现activiti的中文文档:http://www.mossl ...
- 1. Activiti 运行时表信息总结
Activiti的后台是有数据库的支持,所有的表都以ACT_开头. 第二部分是表示表的用途的两个字母标识. 用途也和服务的API对应. ACT_RE_*: 'RE'表示repository. 这个前缀 ...
- Activiti学习(二)数据表结构
Activiti工作流引擎数据库表结构 数据库表的命名 Acitiviti数据库中表的命名都是以ACT_开头的.第二部分是一个两个字符用例表的标识.此用例大体与服务API是匹配的. l ...
- Activiti学习(一) 环境搭建
原料:Activiti5.4 MyEclipse 10 1.先将activiti文件夹放置myeclipse的安装目录dropins文件夹下2.将activiti文件夹里activiti.link中 ...
- Activiti工作流学习(三)Activiti工作流与spring集成
一.前言 前面Activiti工作流的学习,说明了Activiti的基本应用,在我们开发中可以根据实际的业务参考Activiti的API去更好的理解以及巩固.我们实际的开发中我们基本上都使用sprin ...
- activiti当前任务高亮(解决乱码问题)
package com.xinwei; import java.io.File; import java.io.InputStream; import java.util.ArrayList; imp ...
- activiti 中文文档
http://www.mossle.com http://www.mossle.com/docs/activiti/index.html
随机推荐
- ActiveX相关
ActiveX 1.创建ActiveXhttp://blog.csdn.net/fww330666557/article/details/6533118 继承IObjectSafety接口http:/ ...
- 浅谈intval()函数用法
<? } } 总结:intval()函数功能1.参数一定是数字否则会报错,2.如果是数字那一定是整数,如果有小点,那会省略掉,3,强调参数可以有“-”值.4.参数第一位不应为0开头,不然会自动转 ...
- iOS 获取手机 唯一标识-b
存贮在keychainQuery 可以统计用户使用情况 -(void)gatherMessage{ //采集用户设备信息 NSUserDefaults *userDefaults=[NSUserDef ...
- 转:使用Android API最佳实践
原文来自于:http://blog.jobbole.com/65170/ 写在前面 现在,Android应用程序中集成第三方API已十分流行.应用程序都有自己的网络操作和缓存处理机制,但是大部分比较脆 ...
- 转:Thumbs.db是什么文件?是病毒吗?怎么处理?
今天有朋友兴冲冲的问我,Thumbs.db是什么文件?是病毒吗?会不会对电脑产生危害. 很多朋友对Thumbs.db这个文件不了解,会以为是病毒,实际上并非如此.那么,Thumbs.db是什么文件?有 ...
- nutch fetcher.server.delay
1 配置因素 <property> <name>fetcher.server.delay</name> <value>0.0</value&g ...
- express+jade+bootstrap+mongdb simple CRUD test
1:当前环境 y@y:~$ node --version && express -V && mongo --version v0.12.2 MongoDB shell ...
- Android网络传输中必用的两个加密算法:MD5 和 RSA
MD5和RSA是网络传输中最常用的两个算法,了解这两个算法原理后就能大致知道加密是怎么一回事了.但这两种算法使用环境有差异,刚好互补. 一.MD5算法 首先MD5是不可逆的,只能加密而不能解密.比如明 ...
- H - Prince and Princess - HDU 4685(二分匹配+强连通分量)
题意:有N个王子M个公主,王子喜欢一些公主,而且只能是王子喜欢的人,他们才可以结婚,现在让他们尽可能多的结婚的前提下找出来每个王子都可以和谁结婚. 分析:先求出来他们的最大匹配,因为给的数据未必是完备 ...
- 关于Hibemate
1.Hibernate定位 HIbernate是一款实现了ORM思想的框架 JDO TOpLink 2.HIbernate初次解释 Hibernate:冬眠,蛰伏 和持久化有关系 将内存中data持久 ...