扩展jPDLP中的动作元素

1. 动作使用于:

    (1) 向另一个系统一步的发送消息;

    (2) 以同步的方式调用外部的Web服务;

    (3) 用于回调场景,向远程的系统发送请求,完成以后发起一次方法调用。

2. jPDL中action元素使用的位置

    (1)Node节点类型:用动作处理器实现节点定制的功能并将信标前移到合适的转换路径;

    (2)转换路径:作为transition元素的子元素(或属性),当转换路径被触发时,可以调用一个动作;

    (3)事件

    (4)异常

    (5)定时器:当定时器到期时可以触发动作。

3. 实例化动作类的属性

    默认情况下采用字段值的方式,也可以配置属性@config-type来指定,config-type的值包括:

    bean,constructor,constructor-property.当采用字段值的风格的类实例化方式时,jBPM会尝试自动将XMl中

    action元素的子元素值按照其名称填充到匹配的类成员变量中。当要传递跟更复杂的数据时,可采用下面几种方式:

    (1)使用任意复杂的XMl数据

    (2)转换成dom4j的Element

    (3)使用一种<map><entry><key>的XML格式将数据以一个Java Map对象传入

    <action class="com.sample.action.MessageActionHandlerField"
           config-type="field" name="action">
    <message>Going to the field state!</message>
    <xml>
           <value1>Value 1</value1>
           <value2>Value 2</value2>
           <value3 value="Value 3"/>
     </xml>
     <map>
           <entry><key>key1</key> <value>Value 1</value></entry>
           <entry><key>key2</key> <value>Value 2</value></entry>
     </map>
     </action>

     用于接收注入数据的MessageActionHandlerField类:

     public class MessageActionHandlerField implements ActionHandler {
          String message;
          Element xml; //org.dom4j.Element;
          Map<String, String> map;

          public void execute(ExecutionContext context) throws Exception {
                context.getContextInstance().setVariable("message", message);
                System.out.println("map is: " + map.size());
                System.out.println("xml is: " + xml.asXML());
          }
     }

你可能感兴趣的:(元素)