星泉の编程
Java进行时
posts - 3,  comments - 0,  trackbacks - 0
<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)编辑 收藏

<2006年11月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

常用链接

留言簿(1)

随笔档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜