jBPM4.4开发(八)-----------java活动
来源:互联网 发布:windows 10 c盘大小 编辑:程序博客网 时间:2024/05/22 03:16
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开发(八)-----------java活动
- jBPM4.4开发(一)------------start,end,state活动节点
- jbpm4.4 使用之活动标签
- jbpm4.4 使用之活动标签
- jBPM4.4开发(五)-----------custom节点
- jBPM4.4开发(六)-----------fork节点
- jBPM4.4开发(七)-----------事件机制
- jBPM4.4开发(十)-----------mail
- JBPM4.4开发感受
- JBPM4.4应用开发
- JBPM4.4应用开发
- jbpm4.4 java节点
- jbpm4.4开发环境搭建
- jBPM4开发步骤(转)
- JBPM4.4:流程定义语言和活动、事件
- JBPM4.4开发(二)-------------决策节点decision
- jBPM4.4开发(三)-----------task任务节点
- jBPM4.4开发(四)-----------sub-process节点
- class_create()
- junwong 作为软件工程师,你必须知道的20个常识
- Excel表数据导入Sql Server数据库中
- Linux基本命令du和linux中df介绍
- 使用VB对IIS进行简单的管理
- jBPM4.4开发(八)-----------java活动
- 填报表用ajax实现关联单元格自动填充
- 正则表达式参考
- gsoap客户端调用几个webservice服务
- Android手机分辨率基础知识(DPI,DIP计算)
- 如何动态创建带密码的ACCESS数据库?
- 太监娶妻是干什么用的
- Struts2服务器端验证
- 在Debian/Ubuntu VPS下配置Nginx做反向代理