在上一篇文章中,我解释了为什么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 ="accessKey=XXX"+ "&secretKey=XXX"+ "&domainName=demo"+ "&workflowList=demo-wlist"+ "&activityList=demo-alist"+ "&version=1.0"+ "&clientConfiguration.endpoint=swf.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?repeatCount=10").setBody(property("CamelTimerCounter")).to("aws-swf://workflow?" + COMMON_OPTIONS + "&eventName=calculator").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 + "&eventName=calculator").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 + "&eventName=incrementor");}}}

我们的演示决策器中的逻辑很简单:如果传入的参数大于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 + "&eventName=incrementor").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.html

亚马逊Simple Worklfow服务的骆驼演示相关推荐

  1. 亚马逊跨境电商_亚马逊Simple Worklfow服务的骆驼演示

    亚马逊跨境电商 在上一篇文章中,我解释了为什么AWS SWF服务很好,并宣布了新的Camel SWF组件. 现在,组件文档已准备就绪,这是一个简单的完全可用的演示. 它包含三个独立的独立骆驼路线:工作 ...

  2. amazon云服务_亚马逊Simple Worklfow服务的骆驼演示

    amazon云服务 在上一篇文章中,我解释了为什么AWS SWF服务很好,并宣布了新的Camel SWF组件. 现在,组件文档已准备就绪, 这是一个简单的完全可用的演示. 它包含三个独立的独立骆驼路线 ...

  3. SpringBoot 亚马逊Simple邮件发送

    SpringBoot 亚马逊Simple邮件发送 1.添加maven依赖 <!-- https://mvnrepository.com/artifact/org.springframework. ...

  4. 树莓派Zero W发布;亚马逊 AWS S3 服务出现故障 | IoT黑板报

    树莓派Zero W发布,配有Wi-Fi和蓝牙售价10美元 @cnBeta 为了庆祝树莓派的第五个生日,树莓派基金会推出了树莓派Zero W,它本质上是树莓派Zero ,但是添加了许多用户一直要求的功能 ...

  5. magento|使用亚马逊的ses服务进行邮件营销

    邮件作为外贸电商系统中很重要的一个范畴,如何保证在大批量的发送邮件而不被邮箱系统误认为是垃圾邮件而拦截就是很重要的一个功能.我们的客户有使用免费的163企业邮,有使用付费的邮箱如阿里云企业邮箱,zoh ...

  6. 体验云计算的成果----亚马逊免费云计算服务

    云计算是最近几年来讨论比较火的话题,就在前几年绝大部分人对云计算还是没信心.不过这些年,经过业界的大佬们,技术牛人们的努力,现在云计算以及衍生出来的一些云计算服务逐渐成型.全球许多公司也相继的推出了直 ...

  7. 亚马逊云服务开通指南_亚马逊弹性容器服务初学者指南

    亚马逊云服务开通指南 This article is a beginner's high level look at Amazon ECS. We'll cover core concepts, te ...

  8. 【架构】研究谷歌和亚马逊的微服务案例,我们能学习到的经验

    产品复杂度与日俱增.想继续按以前的节奏去演进产品变得越来越困难了,是时候寻找一种更好的方法了.微服务架构承诺可以让团队快速前进... 但与此同时也带来了一系列全新的挑战. 在为Enchant搭建微服务 ...

  9. 阿里云是什么,与亚马逊的云服务相比较,处于什么位置?

    阿里云ECS提供按需购买和包月购买两种.这里咱们讨论包月购买的情况.包月购买时,我们可以选择相应的配置:CPU.内存.硬盘.带宽. 价格分析 CPU,约48元1核 内存,18元512MB 硬盘最便宜, ...

最新文章

  1. 探测服务器操作系统工具,探测服务器操作系统
  2. salt return mysql_mysql中储存salt返回结果
  3. httppost数据上传 unity_Unity中国增强版发布
  4. 合唱队形(洛谷-P1091)
  5. iPhone SE 3最高机身内存将增至256GB 较当前版本翻番
  6. 如何在局域网搭建php网站,【自己网站搭建】如何使用本地计算机,建立本地网站?怎样才能让局域网上的人都能访问到我电脑上的本地网站?...
  7. 查询记录时rs.previous()的使用
  8. Minimum Size Subarray Sum (二分)
  9. 请描述计算机软件分类,2014年计算机一级考试MsOffice模拟题
  10. Django 文件下载
  11. 长字符串的算术编码matlab,算术编码及MATLAB实现
  12. html超链接打开共享文件夹,访问共享文件夹的方法
  13. BZOJ4516 [Sdoi2016]生成魔咒 后缀自动机/后缀数组
  14. SpringSecurity(二): @Secured、@PreAuthorize、@PostAuthorize、@PostFilter、@PreFilter注解说明
  15. 个人博客系统的设计与实现
  16. 怎样快速制作GIF动图?教你一分钟在线制作GIF
  17. 5.系统设计的工作内容与技能工具有哪些?
  18. 基于SpringBoot实现邮箱找回密码
  19. 川土微电子|全系列集成隔离电源的隔离器芯片
  20. Leetcode_75_Sort Colors

热门文章

  1. javadoc提取工具_使JavaDoc保持最新状态的工具
  2. maven依赖范围_Maven依赖范围
  3. gradle引入依赖:_Gradle善良:获得更多的依赖性见解
  4. 如何构建一个Maven插件
  5. 从外部CorDapp扩展和覆盖流
  6. OCA第7部分的Java难题
  7. forkjoin_应用ForkJoin –从最佳到快速
  8. 使用Servlet和Bootstrap上传Ajax文件
  9. 垃圾收集算法,垃圾收集器_您正在使用什么垃圾收集器?
  10. update se_Java SE 7 Update 25 –发行说明进行了解释。