长沙网站建设1681989,淮安市淮阴区建设局网站,wap是什么意思卡老师,注册境外服务公司amazon云服务在上一篇文章中#xff0c;我解释了为什么AWS SWF服务很好#xff0c;并宣布了新的Camel SWF组件。 现在#xff0c;组件文档已准备就绪#xff0c; 这是一个简单的完全可用的演示。 它包含三个独立的独立骆驼路线#xff1a; 工作流生产者允许我们与工作流进… amazon云服务 在上一篇文章中我解释了为什么AWS SWF服务很好并宣布了新的Camel SWF组件。 现在组件文档已准备就绪 这是一个简单的完全可用的演示。 它包含三个独立的独立骆驼路线 工作流生产者允许我们与工作流进行交互。 它可以启动新的工作流程执行查询其状态向正在运行的工作流程发送信号或者终止并取消它。 在我们的演示中WorkflowProducer启动了一条路线该路线安排了 10个工作流程执行每个执行都接收一个数字作为参数。 package com.ofbizian.swf.demo;import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.main.Main;public class WorkflowProducer {public static String COMMON_OPTIONS accessKeyXXX secretKeyXXX domainNamedemo workflowListdemo-wlist activityListdemo-alist version1.0 clientConfiguration.endpointswf.eu-west-12.amazonaws.com;public static void main(String[] args) throws Exception {Main main new Main();main.enableHangupSupport();WorkflowProducerRoute route new WorkflowProducerRoute();main.addRouteBuilder(route);main.run();}static class WorkflowProducerRoute extends RouteBuilder {Overridepublic void configure() throws Exception {from(timer://workflowProducer?repeatCount10).setBody(property(CamelTimerCounter)).to(aws-swf://workflow? COMMON_OPTIONS eventNamecalculator).log(SENT WORKFLOW TASK ${body});}}
} 安排好工作流程执行后我们需要一个流程来决定下一步的工作。 在Camel中这是使用工作流使用者完成的。 工作流程使用者代表工作流程逻辑。 启动后它将开始轮询工作流决策任务并对其进行处理。 除了处理决策任务之外工作流使用者路由还将接收信号从工作流生产者发送或状态查询。 工作流使用者的主要目的是安排活动任务以使用活动生产者执行。 实际上只能从工作流程使用者启动的线程中安排活动任务。 package com.ofbizian.swf.demo;import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.aws.swf.SWFConstants;
import org.apache.camel.main.Main;public class WorkflowConsumer {public static void main(String[] args) throws Exception {Main main new Main();main.enableHangupSupport();WorkflowConsumerRoute route new WorkflowConsumerRoute();main.addRouteBuilder(route);main.run();}static class WorkflowConsumerRoute extends RouteBuilder {Overridepublic void configure() throws Exception {from(aws-swf://workflow? WorkflowProducer.COMMON_OPTIONS eventNamecalculator).choice().when(header(SWFConstants.ACTION).isEqualTo(SWFConstants.SIGNAL_RECEIVED_ACTION)).log(Signal received ${body}).when(header(SWFConstants.ACTION).isEqualTo(SWFConstants.GET_STATE_ACTION)).log(State asked ${body}).when(header(SWFConstants.ACTION).isEqualTo(SWFConstants.EXECUTE_ACTION)).setBody(simple(${body[0]})).log(EXECUTION TASK RECEIVED ${body}).filter(simple(${body} 5)).to(aws-swf://activity? WorkflowProducer.COMMON_OPTIONS eventNameincrementor);}}} 我们的演示决策器中的逻辑很简单如果传入的参数大于5我们将安排任务执行。 否则由于没有其他任务要执行因此工作流将完成。 请注意它还具有处理信号和状态查询事件的分支。 我们的分布式工作流应用程序因为它包含三个独立的应用程序的最后一个选择是ActivityConsumer它实际上执行一些计算。 它具有最简单的实现递增给定参数并返回它。 package com.ofbizian.swf.demo;import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.main.Main;public class ActivityConsumer {public static void main(String[] args) throws Exception {Main main new Main();main.enableHangupSupport();ActivityConsumerRoute route new ActivityConsumerRoute();main.addRouteBuilder(route);main.run();}static class ActivityConsumerRoute extends RouteBuilder {Overridepublic void configure() throws Exception {
from(aws-swf://activity? WorkflowProducer.COMMON_OPTIONS eventNameincrementor).setBody(simple(${body[0]})).log(RECEIVED ACTIVITY TASK ${body}).setBody(simple(${body}));}}
} 运行此演示所需要做的只是创建适当的工作流域并将密钥/秘密添加到路由中。 参考来自OFBIZian博客的JCG合作伙伴 Bilgin Ibryam提供的有关Amazon Simple Worklfow服务的骆驼演示 。 翻译自: https://www.javacodegeeks.com/2014/01/a-camel-demo-for-amazons-simple-worklfow-service.htmlamazon云服务