<process-definition name="process名称">
<start-state>
<transition to="s"/>
</start-state>
<state name="s">
<transition to="end"/>
</state>
<end-state name="end"/>
</process-definition>
posted @
2006-11-13 11:46 刘鑫铨 阅读(200) |
评论 (0) |
编辑 收藏
早先在公司是实习的时候做过一些工作流的东西,听说过jBpm,可惜一直无缘得见。
这回念研,总算有个机会好好了解一下jBpm
1、一个简单的例子:
//解析XML,生成定义
ProcessDefinition definition = ProcessDefinition.parseXmlString(String xmlString);
//建立一个过程,并把节点设置在开始节点
ProcessInstance processInstance = new ProcessInstance(processDefinition);
//获得过程中记号的位置
Token token = processInstance.getRootToken();
这时候token.getNode()就应该位于过程当前运行的节点上
所以刚创建的时候 precessDefinition.getStartState()应该等于token.getNode();
调用token.signal()用于让过程继续下去,而且该方法会阻塞直到程序处于等待状态
这时token.getNode()应该与期望的processDefinition.getNode(节点名称)一致
2、配置环境与状态持久化
JbpmConfiguration configuration = JbmConfiguration.parseXmlString(String xml字符串);
configuration.createSchema();
configuration.dropSchema();
数据库记录当前状态
JbpmContext context = configuration.createJbpmContext();
//这句将ProcessDefinition持久化到数据库中
context.deployProcessDefinition(processDefinition);
context.close();
//读取的办法
GraphSession graphSession = context.getGraphSession();
processDefinition = graphSession.findLatestProcessDefinition("定义名");
List instances = graphSession.findProcessInstances(processDefinition.getId());
instance.signal();//继续执行的过程
instance.hasEnded();
context.save(instance);
3、变量操作
ContextInstance contextInstance = processInstance.getContextInstance();
contextInstance.setVariable("名",值);
posted @
2006-11-13 11:43 刘鑫铨 阅读(274) |
评论 (0) |
编辑 收藏
JUnit测试存在的问题——并未完成整个功能,而只是其中的某些类时该如何去做?
JMock解决了这一个问题,通过面向接口和动态代理,事情变得异常简单。
JMock的常见用法如下:
1、com.mockobjects.dynamic.Mock类
Mock 对象名 = new Mock(接口名.class);
接口名 inter = (接口名)对象名.proxy();
2、定义预期Mock对象哪个方法将被怎样调用
(1)对象.expect("方法名",参数对象)
常见的参数对象有C.ANY_ARGS
(2)参数对象也可以用如下的方法
new Constraint[]{}
Constraint只有一个方法public boolean eval(Object o);
常见的有
IsEqual(Object)
IsAnything
IsInstanceOf(Class)
IsGreaterThan(数字)
(3)还可以用C.eq(对象1,对象2,.)
3、将Mock对象作为参数传入程序,正常执行方法,然后调用对象的verify方法看是否已经真的被调用了该方法
4、让Mock对象能按指定的方式返回值
mock.matchAndReturn("方法名",对象);
posted @
2006-11-11 23:55 刘鑫铨 阅读(350) |
评论 (0) |
编辑 收藏