论坛首页 Java企业应用论坛

jBPM-jPDL学习笔记——流程设计与控制

浏览 55330 次
该帖已经被评为良好帖
作者 正文
   发表时间:2008-05-20  
先谢谢,linliangyi2007 的贡献!我在部署中出现了一个问题:我把流程持久化到数据时,有异常:
   org.dom4j.DocumentException: Error on line 1 of document  : Content is not allowed in prolog. Nested exception: Content is not allowed in prolog.

  对这个异常在网上找到资料是 processdefinition.xml 的utf-8的编码引起,是dom4j.jar的问题,jbmp3.2自带的是1.4,我重新下载了个dom4j-1.6.1.jar,替换原来 的dom4j.jar。但部署时还是出现上述异常问题。
我的持久化代码:
   /**
     * deploy persistent
     */
    public void testDeployProcessDefinition() {
        ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("firstflow/processdefinition.xml");
        JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
        try {
          jbpmContext.deployProcessDefinition(processDefinition);

        } finally {
          jbpmContext.close();
        }
      }
备注说明:processdefinition.xml 还是linliangyi2007 贡献的中原文件。没有任何改动 。
由于是初次学习jbpm,不知道哪位朋友,遇到过这个问题,请多指教。
0 请登录后投票
   发表时间:2008-05-20  
纠正说明:jbmp3.2自带的dom4j已经是1.6的了。
0 请登录后投票
   发表时间:2008-05-20  
问题已经搞清了。是我的代码失误:ProcessDefinition.parseXmlString("firstflow/processdefinition.xml");
应该是ProcessDefinition.parseXmlResource("firstflow/processdefinition.xml");
小小的失误竟然浪费2个小时。当时心里清楚是要用parseXmlResource。可就是用parseXmlString。。。。。。 教训呀!!!!
0 请登录后投票
   发表时间:2008-05-24  
随便写的一个简单的deployProcess方法:

public void deployProcess() {
jbpmContext = jbpmConfiguration.createJbpmContext();
try {
ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
      "<process-definition name='hello world'>" +
      "  <start-state name='start'>" +
      "    <transition to='s' />" +
      "  </start-state>" +
      "  <state name='s'>" +
      "    <transition to='end' />" +
      "  </state>" +
      "  <end-state name='end' />" +
      "</process-definition>"
    );
jbpmContext.deployProcessDefinition(processDefinition);
} finally {
jbpmContext.close();
}
}
0 请登录后投票
   发表时间:2008-06-10  
林兄,我的运行十分正常,但就发现有DB测试打印任务这个方法时总是内容为空,奇怪了!
问题是在:
List<TaskInstance> coll = jbpmContext.getTaskMgmtSession().findTaskInstancesByProcessInstance(pi);
        System.out.println("coll size:"+coll.size()); //为什么这里总是size为0
0 请登录后投票
   发表时间:2008-08-13  
谢谢分享,我在学习中遇到点问题,进行标准测试时报下面的错误,请帮助解答一下

ti.actor = DepartmentManager
Exception in thread "main" org.jbpm.JbpmException: task node does not have leaving transition '部门经理审批通过'
at org.jbpm.taskmgmt.exe.TaskInstance.end(TaskInstance.java:419)
at com.firstflow.FirstFlowProcessDBTest.approveByManager(FirstFlowProcessDBTest.java:140)
at com.firstflow.FirstFlowProcessDBTest.test6000YuanApplication(FirstFlowProcessDBTest.java:47)
at com.firstflow.FirstFlowProcessDBTest.main(FirstFlowProcessDBTest.java:33)
0 请登录后投票
   发表时间:2008-08-25  
谢谢楼主的讲解,我这里有个疑问,为什么在经理审批的时候才指定经理,而不是在申请的时候就指定审批的经理,这样经理上线以后才能知道自己有那个Task.
0 请登录后投票
   发表时间:2008-08-26  
引用
谢谢楼主的讲解,我这里有个疑问,为什么在经理审批的时候才指定经理,而不是在申请的时候就指定审批的经理,这样经理上线以后才能知道自己有那个Task.


这个完全是看业务设计的需要咯,没有一定由什么时候来指定执行者的。jBPM都可以支持的
0 请登录后投票
   发表时间:2008-09-03  
楼主我有个问题,如果填写借款金额以后,等待manage审批,但流定义可以在manage审批之前可以修改,这个流程怎么定义啊?
1 请登录后投票
   发表时间:2008-09-05  
引用
楼主我有个问题,如果填写借款金额以后,等待manage审批,但流定义可以在manage审批之前可以修改,这个流程怎么定义啊?


什么叫“流定义”啊?!
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics