zoukankan      html  css  js  c++  java
  • jbpm4 java活动如何使用动态参数

    在jbpm4中使用java活动的时候我们需要从外部传入参数,在例子中没有说明如何实现。

    下面以jbpm的自带的例子为例:

    首先我们修改例子的配置文件:

    代码
    <?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
    ="org.jbpm.examples.java.JohnDoe"
            method
    ="hello"
            var
    ="answer"
            g
    ="96,16,83,52">

        
    <field name="state"><string value="fine"/></field>
            
    <arg>
                
    <ref object="msg"/>
            
    </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>

    我们修改了xml文件,在arg把 <string value="Hi, how are you?"/></arg>
     修改为 <ref object="msg"/>
    java代码修改为:

    代码
    package org.jbpm.examples.java;

    import java.util.HashMap;
    import java.util.Map;

    import org.jbpm.api.ProcessInstance;
    import org.jbpm.test.JbpmTestCase;


    /**
     * 
    @author Tom Baeyens
     
    */
    public class JavaInstantiateTest extends JbpmTestCase {

      String deploymentId;
      
      
    protected void setUp() throws Exception {
        
    super.setUp();
        
        deploymentId 
    = repositoryService.createDeployment()
            .addResourceFromClasspath(
    "org/jbpm/examples/java/process.jpdl.xml")
            .deploy();
      }

      
    protected void tearDown() throws Exception {
        repositoryService.deleteDeploymentCascade(deploymentId);
        
        
    super.tearDown();
      }

      
    public void testJavaInstantiate() {
        Map
    <String, Object> variables = new HashMap<String, Object>();
        variables.put(
    "hand"new Hand());
        variables.put(
    "joesmoe"new JoeSmoe());
        variables.put(
    "msg""Hi, how are you?");
        
        ProcessInstance processInstance 
    = executionService.startProcessInstanceByKey("Java", variables);
        String pid 
    = processInstance.getId();
        
        String answer 
    = (String) executionService.getVariable(pid, "answer");
        assertEquals(
    "I'm fine, thank you.", answer);

        Hand hand 
    = (Hand) executionService.getVariable(pid, "hand");
        assertTrue(hand.isShaken());
      }
    }

    我们在java代码中加入了 variables.put("msg""Hi, how are you?"); 其中msg作为java的参数传入。

  • 相关阅读:
    整数数组中最大子数组的和的问题(续)
    整数数组中最大子数组的和的问题
    PHP开发环境(Apache+mysql+PHPstorm+php)的搭建
    echart 库 初始
    2.15 学习总结 之 天气预报APP volley(HTTP库)之StringRequest
    2.14 学习总结 之 序列化
    2.13 阶段实战 使用layui重构选课系统
    2.12 学习总结 之 表单校验插件validate
    jsp连接数据库的乱码问题 servlet请求参数编码处理get post
    Rocket
  • 原文地址:https://www.cnblogs.com/yg_zhang/p/1934045.html
Copyright © 2011-2022 走看看