測试jbpm6.2使用的基础类
<persistenceversion="2.0"xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsdhttp://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_2_0.xsd"xmlns:orm="http://java.sun.com/xml/ns/persistence/orm"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/persistence"><persistence-unit name="org.jbpm.persistence.jpa" transaction-type="JTA"><provider>org.hibernate.ejb.HibernatePersistence</provider><jta-data-source>jdbc/jbpm-ds</jta-data-source><mapping-file>META-INF/JBPMorm.xml</mapping-file><mapping-file>META-INF/Taskorm.xml</mapping-file><mapping-file>META-INF/TaskAuditorm.xml</mapping-file><class>org.drools.persistence.info.SessionInfo</class><class>org.jbpm.persistence.processinstance.ProcessInstanceInfo</class><class>org.drools.persistence.info.WorkItemInfo</class><class>org.jbpm.persistence.correlation.CorrelationKeyInfo</class><class>org.jbpm.persistence.correlation.CorrelationPropertyInfo</class><class>org.jbpm.process.audit.ProcessInstanceLog</class><class>org.jbpm.process.audit.NodeInstanceLog</class><class>org.jbpm.process.audit.VariableInstanceLog</class><!-- manager --><class>org.jbpm.runtime.manager.impl.jpa.ContextMappingInfo</class><class>org.jbpm.services.task.impl.model.AttachmentImpl</class><class>org.jbpm.services.task.impl.model.ContentImpl</class><class>org.jbpm.services.task.impl.model.BooleanExpressionImpl</class><class>org.jbpm.services.task.impl.model.CommentImpl</class><class>org.jbpm.services.task.impl.model.DeadlineImpl</class><class>org.jbpm.services.task.impl.model.DelegationImpl</class><class>org.jbpm.services.task.impl.model.EscalationImpl</class><class>org.jbpm.services.task.impl.model.GroupImpl</class><class>org.jbpm.services.task.impl.model.I18NTextImpl</class><class>org.jbpm.services.task.impl.model.NotificationImpl</class><class>org.jbpm.services.task.impl.model.EmailNotificationImpl</class><class>org.jbpm.services.task.impl.model.EmailNotificationHeaderImpl</class><class>org.jbpm.services.task.impl.model.PeopleAssignmentsImpl</class><class>org.jbpm.services.task.impl.model.ReassignmentImpl</class><class>org.jbpm.services.task.impl.model.TaskImpl</class><class>org.jbpm.services.task.impl.model.TaskDataImpl</class><class>org.jbpm.services.task.impl.model.UserImpl</class><!--BAM for task service --><class>org.jbpm.services.task.audit.impl.model.BAMTaskSummaryImpl</class><!-- Event Classes --><class>org.jbpm.services.task.audit.impl.model.TaskEventImpl</class><!-- Task Audit Classes --><class>org.jbpm.services.task.audit.impl.model.AuditTaskImpl</class><properties><property name="hibernate.max_fetch_depth" value="3"/><property name="hibernate.show_sql" value="true" /><!-- BZ 841786: AS7/EAP 6/Hib 4 uses new (sequence) generators which seem to cause problems --><property name="hibernate.id.new_generator_mappings" value="false" /><property name="hibernate.transaction.jta.platform" value="org.hibernate.service.jta.platform.internal.BitronixJtaPlatform" /></properties></persistence-unit></persistence>
package com.chenwd.jbpm.test.base;import java.util.HashMap;import java.util.Map;import java.util.Properties;import javax.persistence.EntityManager;import javax.persistence.EntityManagerFactory;import javax.persistence.Persistence;import org.jbpm.process.audit.strategy.StandaloneJtaStrategy;import org.jbpm.runtime.manager.impl.RuntimeEnvironmentBuilder;import org.jbpm.services.task.identity.JBossUserGroupCallbackImpl;import org.junit.After;import org.junit.Before;import org.kie.api.io.ResourceType;import org.kie.api.runtime.manager.RuntimeEnvironment;import org.kie.api.runtime.manager.RuntimeManager;import org.kie.api.runtime.manager.RuntimeManagerFactory;import org.kie.api.task.UserGroupCallback;import org.kie.internal.io.ResourceFactory;import bitronix.tm.resource.jdbc.PoolingDataSource;public class jbpmTestBase {protected static EntityManagerFactory emf;protected static StandaloneJtaStrategy persistenceStrategy;protected static EntityManager em;private static PoolingDataSource ds;@Beforepublic void setup() {ds = setupDataSource();Map configOverrides = new HashMap();configOverrides.put("hibernate.hbm2ddl.auto", "none");configOverrides.put("hibernate.dialect", "org.hibernate.dialect.MySQL5InnoDBDialect");emf = Persistence.createEntityManagerFactory("org.jbpm.persistence.jpa", configOverrides);if(emf != null){persistenceStrategy = new StandaloneJtaStrategy(emf);em = persistenceStrategy.getEntityManager();}}@Afterpublic void teardown() {if (ds != null) {ds.close();}}protected static void out(Object o){System.out.println(String.valueOf(o));}private static RuntimeManager getRuntimeManager(String process) {Properties properties = new Properties();properties.setProperty("krisv", "");properties.setProperty("mary", "");properties.setProperty("john", "");UserGroupCallback userGroupCallback = new JBossUserGroupCallbackImpl(properties);RuntimeEnvironment environment = RuntimeEnvironmentBuilder.getDefault().persistence(true).entityManagerFactory(emf).userGroupCallback(userGroupCallback).addAsset(ResourceFactory.newClassPathResource(process), ResourceType.BPMN2).get();return RuntimeManagerFactory.Factory.get().newPerProcessInstanceRuntimeManager(environment);}private static PoolingDataSource setupDataSource() {PoolingDataSource pds = new PoolingDataSource();pds.setUniqueName("jdbc/jbpm-ds");pds.setClassName("bitronix.tm.resource.jdbc.lrc.LrcXADataSource");pds.setMaxPoolSize(5);pds.setAllowLocalTransactions(true);pds.getDriverProperties().put("user", "root");pds.getDriverProperties().put("password", "root");pds.getDriverProperties().put("url", "jdbc:mysql://localhost:3306/jbpm2");pds.getDriverProperties().put("driverClassName", "com.mysql.jdbc.Driver");pds.init();return pds;}}
actorid的账号比較少,并且没有group。我们能够在构建RuntimeEnvironment时自己实现userGroupCallback接口,这样能够对用户和组进行java编码验证。例如以下所看到的。
private static RuntimeManager getRuntimeManager(String process) {RuntimeEnvironment environment = RuntimeEnvironmentBuilder.getDefault().persistence(true).entityManagerFactory(emf).userGroupCallback(new UserGroupCallback() {public List<String> getGroupsForUser(String userId, List<String> groupIds, List<String> allExistingGroupIds) {List<String> result = new ArrayList<String>();if ("chenwd".equals(userId)) {result.add("group1");}return result;}public boolean existsUser(String arg0) {return true;}public boolean existsGroup(String arg0) {return true;}}).addAsset(ResourceFactory.newClassPathResource(process), ResourceType.BPMN2).get();return RuntimeManagerFactory.Factory.get().newPerProcessInstanceRuntimeManager(environment);}
之后我们的详细測试类能够继承这个类。获取kieSession和taskServcie进行流程发起和task处理。示比例如以下所看到的。
public class JbpmTest extends JbpmTestBase{@Testpublic void testStartProcess() throws Exception {try {RuntimeManager manager = getRuntimeManager("sample.bpmn");RuntimeEngine runtime = manager.getRuntimeEngine(EmptyContext.get());KieSession ksession = runtime.getKieSession();//设置流程variables。发起流程Map<String, Object> params = new HashMap<String, Object>();ProcessInstance pi = ksession.startProcess("com.sample.bpmn.hello", params);manager.disposeRuntimeEngine(runtime);} catch (Throwable th) {th.printStackTrace();}}}
測试jbpm6.2使用的基础类的更多相关文章
- eclipse下的ssh框架整合过程及測试
最近在搭建Stuts2+hibernate+spring的框架,网上看的教程,大部分都是非常easy的步骤.没有比較具体的步骤以及每一个步骤完毕之后怎样检查是否配置成功.下面是笔者依据自己搭建的过程进 ...
- Android自己主动化測试解决方式
如今,已经有大量的Android自己主动化測试架构或工具可供我们使用,当中包含:Activity Instrumentation, MonkeyRunner, Robotium, 以及Robolect ...
- java 搭建webservice服务+testclient測试
整理别人的日志: 一.什么是webservice 一种构建应用程序的普遍模型,能够在不论什么支持网络通信的操作系统中执行.一种新的web应用程序分支,能够公布.定位通过web调用.它是一个应用组件,为 ...
- 玩转Bash脚本:test測试语句
总第1篇test就是測试的意思,经常使用在流程控制语句中作为条件.以下做一下介绍. 关于真值 与其它语言不同,Bash(包含其它Shell)中,是用0表示真,非0表示假的.之所以用0表示成功,而不是1 ...
- MYSQL BLOB 字段大小以及个数的限制測试。
測试结论 mysql版本号 5.1 表类型: innodb, row_format=compact (这是默认的行格式) 插入超过10个blob, blob的数据量非常小(<76 ...
- python第三方库系列之十九--python測试使用的mock库
一.为什么须要mock 在写unittest的时候,假设系统中有非常多外部依赖,我们不须要也不希望把全部的部件都执行一遍.比方,要验证分享到微博的功能,假设每次測试的时候都要真实地把接 ...
- Cocos2d-x 3.0- 在Visual Studio 2012中执行測试项目
Cocos2d-x - 怎样在Win32执行cpp-tests 2014年4月30日 星期三 小雨 微凉 稍显疲惫 注:本篇文章来自Cocos2d-x官网,小巫仅仅是粗略翻译眼下最新版本号的,教大家怎 ...
- Android网络传输中必用的两个加密算法:MD5 和 RSA (附java完毕測试代码)
MD5和RSA是网络传输中最经常使用的两个算法,了解这两个算法原理后就能大致知道加密是怎么一回事了.但这两种算法使用环境有差异,刚好互补. 一.MD5算法 首先MD5是不可逆的,仅仅能加密而不能解密. ...
- 利用Continuous Testing实现Eclipse环境自己主动单元測试
当你Eclipse环境中改动项目中的某个方法时,你可能因为各种原因没有执行单元測试,结果代码提交,悲剧就可能随之而来. 所幸infinitest(http://infinitest.github.io ...
随机推荐
- [Android中级]使用Commons-net-ftp来实现FTP上传、下载的功能
本文属于学习分享,如有雷同纯属巧合 利用业余时间.学习一些实用的东西,假设手又有点贱的话.最好还是自己也跟着敲起来. 在android上能够通过自带的ftp组件来完毕各种功能.这次是由于项目中看到用了 ...
- Qt容器类的对象模型及应用(线性结构篇:对于QList来说,sharable默认是false的,但对于接下来讲的QVector来说,sharable默认是true)
用Qt做过项目开发的人,肯定使用过诸如QList.QVector.QLinkList这样的模板容器类,它们虽然名字长的不同,但使用方法都大致相同, 因为其使用方法都大体相同,很多人可能随便拿一个容器类 ...
- oracle 实时查询最耗CPU资源的SQL语句
1. 先通过top命令查看产用资源较多的spid号 2.查询当前耗时的会话ID,用户名,sqlID等: select sid,serial#,machine,username,program,sql_ ...
- Regexp-Utils:银行卡号Luhm校验
ylbtech-Regexp-Utils:银行卡号Luhm校验 1.返回顶部 1.方法 //Description: 银行卡号Luhm校验 //Luhm校验规则:16位银行卡号(19位通用): // ...
- 12.Matlab神经网络工具箱
概述: 1 人工神经网络介绍 2 人工神经元 3 MATLAB神经网络工具箱 4 感知器神经网络 5 感知器神经网络 5.1 设计实例分析 clear all; close all; P=[ ; ]; ...
- C#比较二个数组并找出相同或不同元素的方法
这篇文章主要介绍了C#比较二个数组并找出相同或不同元素的方法,涉及C#针对数组的交集.补集等集合操作相关技巧,非常简单实用, 具有一定参考借鉴价值,需要的朋友可以参考下 " }; " ...
- Redis学习笔记(八) 基本命令:SortedSet操作
原文链接:http://doc.redisfans.com/sorted_set/index.html SortedSet的数据结构类似于Set,不同的是Sorted中的每个成员都分配了一个值(Sco ...
- 洛谷P3746 [六省联考2017]组合数问题
题目描述 组合数 C_n^mCnm 表示的是从 n 个互不相同的物品中选出 m 个物品的方案数.举个例子,从 (1;2;3) 三个物品中选择两个物品可以有 (1;2);(1;3);(2;3) 这三种 ...
- javascript动画函数封装(升级版)
//把 任意对象 的 任意数值属性 改变为 任意的目标值 function animate(obj, json, fn) { clearInterval(obj.timer); obj.timer = ...
- LeetCode(17)Letter Combinations of a Phone Number
题目如下: Python代码: class Solution(object): def letterCombinations(self, digits): """ :ty ...