当前位置: 首页 > news >正文

西宁网站制作费用是多少钱/网站推广策划书

西宁网站制作费用是多少钱,网站推广策划书,做网站专题模板,软件开发专业难学吗执行监听器允许您在流程执行期间发生特定事件时执行外部Java代码或评估表达式。可以捕获的事件是: 开始和结束一个流程实例。转型。开始和结束活动。开始和结束一个网关。开始和结束中间事件。结束开始事件并开始结束事件。 以下流程定义包含3个执行监听器&#x…

执行监听器允许您在流程执行期间发生特定事件时执行外部Java代码或评估表达式。可以捕获的事件是:

  • 开始和结束一个流程实例。
  • 转型。
  • 开始和结束活动。
  • 开始和结束一个网关。
  • 开始和结束中间事件。
  • 结束开始事件并开始结束事件。

以下流程定义包含3个执行监听器:

<process id="executionListenersProcess">
<extensionElements>
<flowable:executionListener
class="org.flowable.examples.bpmn.executionlistener.ExampleExecutionListenerOne"
event="start" />
</extensionElements>
<startEvent id="theStart" />
<sequenceFlow sourceRef="theStart" targetRef="firstTask" />
<userTask id="firstTask" />
<sequenceFlow sourceRef="firstTask" targetRef="secondTask">
<extensionElements>
<flowable:executionListener
class="org.flowable.examples.bpmn.executionListener.ExampleExecutionListenerTwo" />
</extensionElements>
</sequenceFlow>
<userTask id="secondTask" >
<extensionElements>
<flowable:executionListener
expression="${myPojo.myMethod(execution.event)}"
event="end" />
</extensionElements>
</userTask>
<sequenceFlow sourceRef="secondTask" targetRef="thirdTask" />
<userTask id="thirdTask" />
<sequenceFlow sourceRef="thirdTask" targetRef="theEnd" />
<endEvent id="theEnd" />
</process>

当进程启动时通知第一个执行监听器。监听器是一个外部的Java类(ExampleExecutionListenerOne)并且应该实现一个org.flowable.engine.delegate.ExecutionListener接口。事件发生时(在这种情况end下),该方法notify(ExecutionListenerExecution execution)被调用。

public class ExampleExecutionListenerOne implements ExecutionListener {public void notify(ExecutionListenerExecution execution) throws Exception {execution.setVariable("variableSetInExecutionListener", "firstValue");execution.setVariable("eventReceived", execution.getEventName());}
}

也可以使用实现org.flowable.engine.delegate.JavaDelegate接口的委托类。这些委托类可以在其他结构中重用,例如serviceTask的委托。

第二个执行监听器在进行转换时被调用。请注意,该listener元素没有定义一个event,因为只有在take事件过渡。在event转换中定义侦听器时,属性中的值将被忽略。

活动secondTask结束时会调用最后一个执行侦听器。而不是class在侦听器声明中使用,而是expression定义了一个,当事件被触发时,a 被评估/调用。

<flowable:executionListener expression="${myPojo.myMethod(execution.eventName)}" event="end" />

和其他表达式一样,执行变量也被解析并可以被使用。由于执行实现对象具有公开事件名称的属性,因此可以将事件名称传递给您的方法execution.eventName。

执行监听器也支持使用a delegateExpression,类似于服务任务。

<flowable:executionListener event="start" delegateExpression="${myExecutionListenerBean}" />

后来,我们还引入了一种新的执行监听器,org.flowable.engine.impl.bpmn.listener.ScriptExecutionListener。此脚本执行监听器允许您为执行监听器事件执行一段脚本逻辑。

<flowable:executionListener event="start"
class="org.flowable.engine.impl.bpmn.listener.ScriptExecutionListener">
<flowable:field name="script">
<flowable:string>
def bar = "BAR"; // local variable
foo = "FOO"; // pushes variable to execution context
execution.setVariable("var1", "test"); // test access to execution instance
bar // implicit return value
</flowable:string>
</flowable:field>
<flowable:field name="language" stringValue="groovy" />
<flowable:field name="resultVariable" stringValue="myVar" />
</flowable:executionListener>

执行监听器上的字段注入

当使用配置了class属性的执行监听器时,可以应用字段注入。这与服务任务字段注入中使用的机制完全相同,其中包含字段注入提供的可能性的概述。

下面的代码片段显示了一个简单的示例流程,带有一个注入了字段的执行监听器。

<process id="executionListenersProcess">
<extensionElements>
<flowable:executionListener
class="org.flowable.examples.bpmn.executionListener.ExampleFieldInjectedExecutionListener"
event="start">
<flowable:field name="fixedValue" stringValue="Yes, I am " />
<flowable:field name="dynamicValue" expression="${myVar}" />
</flowable:executionListener>
</extensionElements>
<startEvent id="theStart" />
<sequenceFlow sourceRef="theStart" targetRef="firstTask" />
<userTask id="firstTask" />
<sequenceFlow sourceRef="firstTask" targetRef="theEnd" />
<endEvent id="theEnd" />
</process>
public class ExampleFieldInjectedExecutionListener implements ExecutionListener {private Expression fixedValue;private Expression dynamicValue;public void notify(ExecutionListenerExecution execution) throws Exception {execution.setVariable("var", fixedValue.getValue(execution).toString() +dynamicValue.getValue(execution).toString());}
}

类ExampleFieldInjectedExecutionListener连接两个注入字段(一个固定另一个动态)并将其存储在过程变量中var。

@Deployment(resources = {
"org/flowable/examples/bpmn/executionListener/ExecutionListenersFieldInjectionProcess.bpmn20.xml"})
public void testExecutionListenerFieldInjection() {
Map<String, Object> variables = new HashMap<String, Object>();
variables.put("myVar", "listening!");
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(
"executionListenersProcess", variables);
Object varSetByListener = runtimeService.getVariable(processInstance.getId(), "var");
assertNotNull(varSetByListener);
assertTrue(varSetByListener instanceof String);
// Result is a concatenation of fixed injected field and injected expression
assertEquals("Yes, I am listening!", varSetByListener);
}

上面文章来自盘古BPM研究院:http://vue.pangubpm.com/
文章翻译提交:https://github.com/qiudaoke/flowable-userguide
了解更多文章可以关注微信公众号:
在这里插入图片描述

http://www.lbrq.cn/news/1455337.html

相关文章:

  • 五合一网站定制/友链对网站seo有帮助吗
  • 全球十大摄影作品/百度爱采购优化
  • 武汉网站建设yundaow/哈尔滨网站优化
  • 北京网站制作的/深圳小程序开发公司
  • 公司名称起名大全免费/优化大师win10
  • 做网站的天津/云巅seo
  • 宁夏住房和城乡建设局网站/seo比较好的公司
  • 开源程序做网站任务/百度优化教程
  • it运维解决方案/如何做好seo优化
  • 网站开发答辩难点/整合营销方案案例
  • 鹤城机关建设网站/免费人脉推广软件
  • 1个人做多网站负责人/今天发生的重大新闻5条
  • 河南送变电建设有限公司网站/舆情报告
  • seo网站页面优化包含/色盲和色弱的区别
  • 网站开发工作量评估/上海网站建设咨询
  • 怎么做装修网站平台/不属于网络推广方法
  • 大浪网站建设/怎么在百度上设置自己的门店
  • wordpress 学院 模板/在seo优化中
  • 手机网站建设 广州/百度搜索引擎的网址是多少
  • 个人博客网站制作图片/上海百度推广优化排名
  • 即墨有做网站的吗/东莞服务好的营销型网站建设
  • 青岛网站建设运营/青岛网站seo服务
  • 医疗网站建设咨询/网络推广需要多少费用
  • 网站设计实训心得/东莞网络科技公司排名
  • 网站开发公司取名/百度竞价推广开户联系方式
  • 国外设计师灵感网站/b2b免费发布网站大全
  • 求免费的那种网站有哪些/长尾关键词爱站
  • 注册了域名之后如何建立一个网站/中文域名的网站
  • wordpress上传大小/二级域名和一级域名优化难度
  • 手机管理网站模板/百度一下你就知道搜索
  • 力扣1124:表现良好的最长时间段
  • Jmeter进行性能并发测试
  • Javascript面试题及详细答案150道之(031-045)
  • Noob靶场练习
  • 【昇腾推理PaddleOCR】生产级部署方式
  • Codeforces Round 1039 (Div. 2) A-C