ITPub博客

首页 > 应用开发 > Java > jbpm使用要点

jbpm使用要点

原创 Java 作者:gagaghost 时间:2007-03-10 15:47:34 0 删除 编辑

作者:gagaghost Email:gagaghost@gmail.com

1. 流程流转方式:

在一个流程实例化后,流程的节点就会自动进入启动节点,如果要离开启动节点,必须调用signal()的方法.调用该方法后,流程会进入后续节点,也即进入stateOne节点,如果再signal()一次,执行的指针将会指向task1,如过再signal()一次,执行指针就会离开task1节点,移动到下一个节点,而下一个节点正好是end节点, 流程就会终止。当然在task的AssignmentHandle中用TaskInstance.end()方法也可以的。

特别需要说明的是:如果Task Node上没有任务,则执行指针就会自动经过该节点执行到下一个节点.如果task1上没有任务,则在stateOne上调用了signal()后,流程就会结束.

2. 如何取出一个用户的任务列表?

要取出用户的任务列表,必须保证流程已经持久在数据库中了,就可以用如下的语句进行提取了:

JbpmConfiguration config = JbpmConfiguration.getInstance();

JbpmContext jbpmContext = config.createJbpmContext();

TaskMgmtSession session=new TaskMgmtSession(jbpmContext.getSession());

List tasks=session.findTaskInstances("gaga");

3. 如何把一个任务安排给用户?

在Task node上添加Task,并添加AssignmentHandler,在

public class TaskAsignMent implements AssignmentHandler {

public void assign(Assignable assignable, ExecutionContext executionContext)

throws Exception {

assignable.setActorId("gaga");// assignable就是工作项

}

}

4. 泳道(Swimlane)如何使用?

泳道就是用来描述角色的.如果你的某些工作项目是角色来操作的,就可以使用泳道.泳道有点批处理的意思,如果有多个节点是某个角色的用户来完成的,就需要使用这个东西了,否则在每一个任务上设置AssignmentHandler会累死人的^_^!

5. 如何将一个任务安排给用户?

在任务上设置一个AssignmentHandler,在其execute方法中进行设置,和在任务节点上设置用户的方法一样.只不过这里是泳道而已.

6. 如何将流程和要流转的业务系统中的数据结构关联起来?

在流程启动的时候,在流程中放一个变量,该变量中存放外部数据结构的id.当用户得到工作列表的时候,就会取出流程实例中的id,有了id就可以在业务数据库中取出业务数据了.

7. 如何区分在一个任务列表中不同节点上的处理界面?

建立一个节点和界面对应的表即可,用户选定了任务后,系统根据用户选定任务的节点的名称或其他唯一标识符,找出与之对应的界面导航连接后,redirect到该页面即可.

8. 如何图形化显示当前流程的状态?

写一个servlet,将图形显示出来就可以了,如:

public class ProcessImageServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

long processDefinitionId = Long.parseLong( request.getParameter( "definitionId" ) );

JbpmContext jbpmContext = JbpmContext.getCurrentJbpmContext();

ProcessDefinition processDefinition = jbpmContext.getGraphSession().loadProcessDefinition(processDefinitionId);

byte[] bytes = processDefinition.getFileDefinition().getBytes("processimage.jpg");

OutputStream out = response.getOutputStream();

out.write(bytes);

out.flush();

// leave this in. it is in case we want to set the mime type later.

// get the mime type

// String contentType = URLConnection.getFileNameMap().getContentTypeFor( fileName );

// set the content type (=mime type)

// response.setContentType( contentType );

}

}

在创建数据库表时出现的错误

JbpmConfiguration config = JbpmConfiguration

.parseResource("jbpm.cfg.xml");

config.createSchema();

config.close();

提示语法错误,更新了hibernate最新版本的就可以。

hibernate-3.1.3,jbpm

9. 如何向指定的分支流转?

用TaskInstance的end方法,如下所示:

JbpmConfiguration config = JbpmConfiguration.getInstance();

JbpmContext jbpmContext = config.createJbpmContext();

TaskInstance taskInstance=jbpmContext.getTaskMgmtSession().loadTaskInstance(taskId);

String offshoot="" + param.get(Constant.OFFSHOOT);

//taskInstance.end(offshoot);

taskInstance.end();

jbpmContext.save(taskInstance);

jbpmContext.close();

[@more@]

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/5859/viewspace-903753/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: Mule的简介和安装
请登录后发表评论 登录
全部评论
  • 博文量
    64
  • 访问量
    2586491