• 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的参数传入。

  • 相关阅读:
    使用c#生成Identicon图片
    C#实现对文件目录的实时监控
    .Net Core的一些个人总结
    天天写业务代码,如何成为「技术大牛」?
    两款工作流JBPM和CCBPM的对比
    MVC5+EasyUI+EF6+Linq通用权限系统出炉--登录(2)
    MVC5+EasyUI+EF6+Linq通用权限系统出炉(1)
    博客园,久违了
    VS2010 代码行数统计以及代码复制汉字出现乱码
    关于TerrainExplorer的一些资源网址设置方法(备忘)
  • 原文地址:https://www.cnblogs.com/yg_zhang/p/1934045.html
Copyright © 2020-2023  润新知