- 浏览: 230796 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
lwb314:
你的这个是创建的临时的hive表,数据也是通过文件录入进去的, ...
Spark SQL操作Hive数据库 -
yixiaoqi2010:
你好 我的提交上去 总是报错,找不到hive表,可能是哪里 ...
Spark SQL操作Hive数据库 -
bo_hai:
target jvm版本也要选择正确。不能选择太高。2.10对 ...
eclipse开发spark程序配置本地运行
最近学习了jbpm4.X的定时器事件,下面是一个简单的测试,上一篇简单介绍了jbpm4初始化数据库,这次可以从数据库中查看详细的流程执行信息。
流程定义文件:TimerEventTest.jpdl.xml
定时器到到期时间触发的事件:Escalate.java
测试类TestTimerEvent2.java
流程定义文件:TimerEventTest.jpdl.xml
<?xml version="1.0" encoding="UTF-8"?> <process name="TimerEventTest" xmlns="http://jbpm.org/4.4/jpdl"> <start g="44,111,48,48" name="start1"> <transition g="-50,-18" name="to guardedWait" to="guardedWait"/> </start> <state g="181,108,140,52" name="guardedWait"> <on event="timeout"> <timer duedate="1 minutes"/> <event-listener class="com.lujinyong.timer.event.Escalate"/> </on> <transition g="-34,-20" name="go on" to="next step"/> </state> <state g="442,106,92,52" name="next step"/> </process>
定时器到到期时间触发的事件:Escalate.java
package com.lujinyong.timer.event; import org.jbpm.api.listener.EventListener; import org.jbpm.api.listener.EventListenerExecution; /** * 监听事件 */ public class Escalate implements EventListener { private static final long serialVersionUID = 1L; public void notify(EventListenerExecution execution) { //触发监听事件,会将变量插入流程变量表(jbpm4_variable)中 execution.setVariable("escalation", Boolean.TRUE); String mag = "超时了,我要发提醒信息!"; execution.setVariable("mag", mag); } }
测试类TestTimerEvent2.java
package com.lujinyong.timer.event; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Set; import org.jbpm.api.Configuration; import org.jbpm.api.Execution; import org.jbpm.api.ExecutionService; import org.jbpm.api.ManagementService; import org.jbpm.api.ProcessEngine; import org.jbpm.api.ProcessInstance; import org.jbpm.api.job.Job; import org.junit.Test; public class TestTimerEvent2 { /** * * @Description: 部署流程 * @Auther: lujinyong * @Date: 2013-6-24 下午03:41:01 */ @Test public void testDeploy1() { // 1.get processEngine ProcessEngine processEngine = Configuration.getProcessEngine(); //如果不用图片可以将:.addResourceFromClasspath( "com/lujinyong/timer/event/TimerEventTest.png")去掉 processEngine .getRepositoryService() .createDeployment() .addResourceFromClasspath( "com/lujinyong/timer/event/TimerEventTest.jpdl.xml") .addResourceFromClasspath( "com/lujinyong/timer/event/TimerEventTest.png").deploy(); } /** * * @Description: 测试发起流程,注意:名称发起流程后将发起的方法注释起来,在下面的测试中才不会多出发起的记录 * @Auther: lujinyong * @Date: 2013-6-24 下午03:50:31 */ @Test public void testStart() { ProcessEngine processEngine = Configuration.getProcessEngine(); // 根据流程定义id发起流程 // String processDefinitionId = "TimerTransitionTest-2"; // Execution processInstance = processEngine.getExecutionService() // .startProcessInstanceById(processDefinitionId); // 根据流程定义key发起流程 // String processDefinitionKey = "TimerEventTest"; // ExecutionService executionService = processEngine.getExecutionService(); // ManagementService managementService = processEngine.getManagementService(); // Execution processInstance = executionService.startProcessInstanceByKey(processDefinitionKey); // Execution processInstance = executionService.createProcessInstanceQuery().processInstanceKey(processDefinitionKey).list().get(0); // System.out.println("piID:" + processInstance.getId()); // System.out.println("pdKey:" + processInstance.getKey()); // System.out.println("pdid:" + processInstance.getProcessDefinitionId()); // System.out.println("pdState:" + processInstance.getState()); } /** * * @Description: 测试超时的情况 * 如果流程没有在开始以后 10 分钟内执行 singal, * 事件 timeout 就会被触发 事件监听器com.lujinyong.timer.event.Escalate 将被触发 * 即在流程变量表中会插入监听类的一条记录 * @Auther: lujinyong * @Date: 2013-6-24 下午05:38:35 */ @Test public void testTimerEventTimerFires() { ProcessEngine processEngine = Configuration.getProcessEngine(); ExecutionService executionService = processEngine.getExecutionService(); ManagementService managementService = processEngine.getManagementService(); ProcessInstance processInstance = executionService.startProcessInstanceByKey("TimerEventTest"); //查询定时器 Job job = managementService.createJobQuery() .processInstanceId(processInstance.getId()) .uniqueResult(); //假设定时器被触发了,通过编码执行定时器进行模拟 managementService.executeJob(job.getId()); processInstance = executionService.findProcessInstanceById(processInstance.getId()); Set<String> expectedActivityNames = Collections.singleton("guardedWait"); assertEquals(expectedActivityNames, processInstance.findActiveActivityNames()); assertEquals(Boolean.TRUE, executionService.getVariable(processInstance.getId(), "escalation")); System.out.println(">>>>>>>>>>>>>>>>>>"+executionService.getVariable(processInstance.getId(), "mag")); } /** * * @Description: 测试未超时的情况 * 如果 guardedWait 活动在 10 分钟内被结束, * 然后定时器就会被取消, Escalate 事件监听器也不会执行 * 即流程变量表中不会插入监听类的记录 * @Auther: lujinyong * @Date: 2013-6-24 下午05:39:45 */ // @Test // public void testTimerEventContinueBeforeTimerFires() { // ProcessEngine processEngine = Configuration.getProcessEngine(); // ExecutionService executionService = processEngine.getExecutionService(); // ManagementService managementService = processEngine.getManagementService(); // ProcessInstance processInstance = executionService.startProcessInstanceByKey("TimerEventTest"); // // String executionId = processInstance.findActiveExecutionIn("guardedWait").getId(); // // executionService.signalExecutionById(executionId, "go on"); // // processInstance = executionService.findProcessInstanceById(processInstance.getId()); // // assertTrue(processInstance.isActive("next step")); // // List<Job> jobs = managementService.createJobQuery() // .processInstanceId(processInstance.getId()) // .list(); // // assertEquals(new ArrayList<Job>(), new ArrayList<Job>(jobs)); // } }
发表评论
-
BigDecimal实现double精度计算
2014-01-07 16:08 1069java中的float 和double类型会发生精度丢失,为了 ... -
could not read column value from result set: NAME5_1_; 流已被关闭
2013-10-11 15:53 2076最近做流程项目数据库是oracle,获取流程处理人时候出现下面 ... -
Dialect does not support identity key generation
2013-10-10 12:01 2914链接网址:http://kevin12.i ... -
struts2文件下载文件中文名称乱码解决
2013-09-26 14:57 3285链接地址:http://kevin12.iteye.com/b ... -
java 导出excel到客户端(本地)例子 用poi和servlet实现的
2013-08-22 16:05 5631最近做java的web项目,用到了excel导出到客户端(本地 ... -
jbpm4 timer 定时器配置
2013-08-14 11:20 1529jbpm的定时器支持嵌入到状态节点(State),任务节点(T ... -
jbpm4.4基础知识
2013-08-09 11:24 1282来源:http://blog.163.com/hu ... -
jbpm4会签的学习
2013-08-05 18:01 1056会签,又称会审,也就 ... -
java中的HashSet
2013-08-01 17:48 1319HashSet集合 :不允许有重复的元素并且HashSet中元 ... -
java 中的NaN 和Infinity
2013-07-12 17:58 2831NaN是Not a Number的缩写,即不是一个数字。它不等 ... -
简单的 java 格式化数字用法
2013-07-11 18:42 1550有些时候将后台的数据显示到前台界面上要有一定的格式,比如,保留 ... -
javax.el.ELException: expression factory class not found
2013-06-27 21:43 2394jbpm4web项目部署流程时候出错: 信息: error ... -
<Context path="/files" docBase="D:\upload"></Context>
2013-06-18 11:36 5870发布到tomcat中的项目有 ... -
could not read column value from result set: DBID_; Column 'DBID_' not found.
2013-03-18 12:58 2146最近做项目,将原来项目中关于jbpm4(流程方面)的功能移到一 ... -
java中的时间排序易错点
2013-03-12 11:42 1132最近做流程项目时候发现,流程日志显示的问题: ... -
jbpm4条件节点表达式的解析
2013-03-07 16:31 1909说明:最近做jbpm4流程项目时,在条件节点中用到表达式了,流 ... -
java解析表达式
2013-03-07 16:21 1987说明:最近做jbpm4流程项目时,在条件节点中用到表达式了,流 ... -
org.hibernate.exception.ConstraintViolationException: could not delete: [org.jbp
2013-02-28 11:18 1939用jbpm4做流程时候将sqlserver数据库改为mysql ... -
mysql数据库遇到:org.hibernate.MappingException: No Dialect mapping for JDBC type: -1
2013-02-26 17:31 1626在做web项目时,用到了mysql数据库和ssh架构,登录系统 ...
相关推荐
jbpm4源码jbpm4源码jbpm4源码
5.1表JBPM4_DEPLOYMENT 7 5.2 表JBPM4_DEPLOYPROP 7 5.3 表JBPM4_EXECUTION 8 5.4 表JBPM4_HIST_ACTINST 9 5.5 表JBPM4_HIST_DETAIL 9 5.6 表JBPM4_HIST_PROCINST 10 5.7 表JBPM4_HIST_TASK 11 5.8 表JBPM4_HIST_VAR...
2.8 JBPM_TIMER:流程定时器表 19 2.9 JBPM_TOKENVARIABLEMAP:流程TOKEN变量MAP表 19 2.10 JBPM_MODULEINSTANCE:流程模块实例表 20 2.11 JBPM_BYTEARRAY:文件模块形式的流程变量实例表 20 2.12 JBPM_BYTEBLOCK: ...
jboss jbpm4最新开发包 采用了pvm框架
java源代码分包详解JBPM4 java源代码分包详解JBPM4
jbpm应用开发指面(胡奇) jbpm4.3表结构和表字段说明 [jBPM开发指南].高杰.文字版 jBPM5_用户手册-中文版
jbpm4。4中表之间的关系,jbpm4 表关系
jBPM4工作流应用开发指南 胡奇写的,十分赞!!
JBPM4 SSH EXTJS JBPM SSH EXTJS JBPM4 SSH EXTJS JBPM SSH EXTJS JBPM4 SSH EXTJS JBPM SSH EXTJS JBPM4 SSH EXTJS JBPM SSH EXTJS 希望对大家有帮助。
2.8 JBPM_TIMER:流程定时器表 19 2.9 JBPM_TOKENVARIABLEMAP:流程TOKEN变量MAP表 19 2.10 JBPM_MODULEINSTANCE:流程模块实例表 20 2.11 JBPM_BYTEARRAY:文件模块形式的流程变量实例表 20 2.12 JBPM_...
这是jbpm4的安装配置介绍文件,详细的介绍了jbpm4与eclipse的集成
,jbpm4的源码,分支,会签等一些中国特色建立下载《jBPM4工作流应用开发指南.pdf》这本书
JBPM4 开发文档 实例 流程 JBPM4 开发文档 实例 流程 JBPM4 开发文档 实例 流程
风中叶老师讲的JBPM4与Spring整合例子代码 JBPM4 Spring OA工作流系统
整理的别人JBPM4 学习资料, 工作流学习文档
jbpm4新手教程
JBPM4 表结构概要说明 操作信息变化 各字段详细说明
本示例是jBPM4工作流示例jbpmDemo,详细演示了jBPM4工作流引擎的使用,对工作流采用Canvas动画形象演示,非常实用。也非常先进和有趣。 希望您喜欢。
jbpm jbpm4.3.jar DDDDDDDD
深入jPDL和jBPM Service API 201 10.1 timer(定时器)能为您做什么 201 10.1.1 持续时间表达式 202 10.1.2 工作日历 202 10.1.3 定时转移 204 10.1.4 定时事件 205 10.1.5 工作日历定时 207 10.1.6 定时重复 208 ...