jbpm4 java节点动态传参

在jbpm4 beta2上实践了两天向java node传递参数,都无果而终,6月5日 jbpm4 CR1 版本发布了,并且解决了无法向java节点传递参数的bug
JBPM4 CR1 released[url]http://www.jboss.org/feeds/post/jbpm_4_0_cr1_released[/url]
JBPM-2279 [url]https://jira.jboss.org/jira/browse/JBPM-2279[/url]
今天参考Schema实践了一把,终于找到了能将上下文中参数传递到java节点中的方法,流程源文件(对源文件进行了少许修改,如有错误请自行调试)如下

1. 流程定义文件:

<?xml version="1.0" encoding="UTF-8"?>

<process name="test">
<start g="208,15,92,52" name="start">
<transition to="doCreate"/>
</start>
<java class="com.synnex.jbpm.test.java.TestOperator" g="330,79,92,52" method="doCreate" name="doCreate" var="ret">
<transition to="end"/>
<!-- 关键就在这个地方,直接将变量名赋值给ref元素的object属性,在java节点中既可以取道对象的值-->
<arg><ref object="batchNo"/></arg>
<arg><ref object="list"/></arg>
</java>
<end g="223,546,48,48" name="end"/>
</process>


2. java节点文件:

package com.synnex.jbpm.test.java;

import java.util.List;

import org.apache.log4j.Logger;
import org.jbpm.pvm.internal.env.ExecutionContext;

public class TestOperator {

public boolean doCreate(String batchNo, List l){
try{
System.out.println("----------------------------------------------batchNo = " + batchNo);
System.out.println("----------------------------------------------list[1] = " +(String)l.get(0));

}catch(Exception e){
e.printStackTrace();
}
return true;
}
}



3. Main:


import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.jbpm.api.Configuration;
import org.jbpm.api.ExecutionService;
import org.jbpm.api.HistoryService;
import org.jbpm.api.ManagementService;
import org.jbpm.api.ProcessEngine;
import org.jbpm.api.ProcessInstance;
import org.jbpm.api.RepositoryService;
import org.jbpm.api.TaskService;


public class Test {

/**
* @param args
*/
public static void main(String[] args) {
Test test = new Test();
test.deploy();
test.start();
}

ProcessEngine processEngine = new Configuration()
.buildProcessEngine();

RepositoryService repositoryService = processEngine.getRepositoryService();
ExecutionService executionService = processEngine.getExecutionService();
TaskService taskService = processEngine.getTaskService();
HistoryService historyService = processEngine.getHistoryService();
ManagementService managementService = processEngine.getManagementService();
//发布流程
public void deploy(){

long deploymentDbid = repositoryService.createDeployment()
.addResourceFromClasspath("com/synnex/jbpm/test/processes/test.jpdl.xml")
.deploy();
System.out.println(deploymentDbid);
}
//启动流程
public void start(){
Map<String,Object> variables = new HashMap<String,Object>();
//设置两个变量,一个字符串,一个List,传给Java节点
List l = new ArrayList();
l.add("Hello, I am a String~");
variables.put("batchNo", "12");
variables.put("list", l);
ProcessInstance pi = executionService.startProcessInstanceByKey("test", variables);
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值