jBPM4.4开发(八)-----------java活动
2012-07-07 11:51
387 查看
java活动
1.定义
java活动可以指定一个java类的方法,当流程执行到此活动时,马上自动执行此java方法。2.属性
class 属性用来指定此java 的全类名,要注意这个类要有public无参的默认构造方法。expr 这个表达式返回方法被调用所产生的目标对象。
method 指定要调用的方法名。
var 返回存储的变量名。
field 在方法调用之前为成员变量赋值。
arg 要调用的方法的参数。
3.Demo
流程定义文件:<?xml version="1.0" encoding="UTF-8"?> <process name="Java" xmlns="http://jbpm.org/4.4/jpdl"> <start g="20,20,48,48"> <transition to="greet" /> </start> <java name="greet" class="com.itstudio.jbpm.java.demo.JohnDoe" method="hello" var="answer" g="96,16,83,52"> <field name="state"><string value="fine"/></field> <arg><string value="Hi, how are you?"/></arg> <transition to="shake hand" /> </java> <java name="shake hand" expr="#{hand}" method="shake" var="hand" g="215,17,99,52"> <arg><object expr="#{joesmoe.handshakes.force}"/></arg> <arg><object expr="#{joesmoe.handshakes.duration}"/></arg> <transition to="wait" /> </java> <state name="wait" g="352,17,88,52"/> </process>
java类:
Hand.java
package com.itstudio.jbpm.java.demo; import java.io.Serializable; public class Hand implements Serializable { private static final long serialVersionUID = 1L; private boolean isShaken; public Hand shake(Integer force, Integer duration) { if (force>3 && duration>7) { isShaken = true; } return this; } public boolean isShaken() { return isShaken; } }JoeSmoe.java
package com.itstudio.jbpm.java.demo; import java.io.Serializable; import java.util.HashMap; import java.util.Map; public class JoeSmoe implements Serializable { private static final long serialVersionUID = 1L; public Map<String, Integer> getHandshakes() { Map<String, Integer> handshakes = new HashMap<String, Integer>(); handshakes.put("force", 5); handshakes.put("duration", 12); return handshakes; } }JohnDoe.java
package com.itstudio.jbpm.java.demo; import java.io.Serializable; public class JohnDoe implements Serializable { String state; public String hello(String msg) { if ( (msg.indexOf("how are you?")!=-1) ) { return "I'm "+state+", thank you."; } return null; } }
测试类:JavaInstantiateTest.java
package com.itstudio.jbpm.java.demo; import java.util.HashMap; import java.util.Map; import org.jbpm.api.Configuration; import org.jbpm.api.ExecutionService; import org.jbpm.api.ProcessEngine; import org.jbpm.api.ProcessInstance; import org.jbpm.api.RepositoryService; import org.jbpm.api.TaskService; public class JavaInstantiateTest { public final Configuration configuration = new Configuration(); public final ProcessEngine processEngine=configuration.buildProcessEngine(); public final RepositoryService repositoryService= processEngine.getRepositoryService(); public final ExecutionService executionService=processEngine.getExecutionService(); public final TaskService taskService=processEngine.getTaskService(); private void deploy() { repositoryService.createDeployment().addResourceFromClasspath( "com/itstudio/jbpm/java/demo/process.jpdl.xml").deploy(); System.out.println("Successful"); } private void test() { Map<String, Object> variables = new HashMap<String, Object>(); variables.put("hand", new Hand()); variables.put("joesmoe", new JoeSmoe()); ProcessInstance processInstance = executionService .startProcessInstanceByKey("Java", variables); String pid = processInstance.getId(); String answer = (String) executionService.getVariable(pid, "answer"); //显示返回值是否为I'm fine, thank you. System.out.println(answer); Hand hand = (Hand) executionService.getVariable(pid, "hand"); System.out.println(hand.isShaken()); } public static void main(String[] args) { JavaInstantiateTest t = new JavaInstantiateTest(); t.deploy(); t.test(); } }
By Mr.Z
相关文章推荐
- jBPM4.4开发(一)------------start,end,state活动节点
- 微信公众平台深度开发JAVA版第一季 19.微信猜数字活动1
- 【思想篇】工作流技术JBPM4.4开发入门(三)
- jBPM4.4开发(六)-----------fork节点
- jbpm4.4开发环境配置+请假实例
- Myeclipse8.5搭建jbpm4.4的开发环境
- jbpm4.4 使用之活动标签
- jbpm4.4之开发环境搭建1
- [048] 参与CSDN社区问答活动“基于Java的微信公众平台开发”赢签名赠书
- 参与CSDN社区问答活动“基于Java的微信公众平台开发”赢签名赠书
- JBPM4.4开发(二)-------------决策节点decision
- [048] 参与CSDN社区问答活动“基于Java的微信公众平台开发”赢签名赠书
- jbpm4.4 使用之活动标签
- JBPM4.4应用开发
- 全球排名前十的美资投行由于全球业务增长速度较快,需要及时补充技术人员,将于3月4日(周六)在其上海office举办Super Saturday的招聘活动,招聘33名Java开发工程师。欢迎积极报名并推
- 【基础篇】工作流技术JBPM4.4开发入门(一)
- JBPM4.4开发感受
- jbpm4.4之开发环境搭建2
- JBPM4.4:API风格、管理(部署、删除、更改、查询(文件资源、活动坐标))流程定义