TIBCO企业应用解决方案 之EAI解决方案:Business Works + Adapters 3

rel="File-List" href="file:///C:%5CDOCUME%7E1%5Cadapter%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C02%5Cclip_filelist.xml"> rel="Edit-Time-Data" href="file:///C:%5CDOCUME%7E1%5Cadapter%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C02%5Cclip_editdata.mso">

自动流程的实现

上文中提到Business Works流程编排的语法类似简化版的过程式解释型计算机语言的语法,编排出的流程和程序一样都会由引擎来解释运行,和语言的区别在于其使用图形化的编排方式。Business Works的流程编排,采用XML描述。支持分支选择,循环,子流程调用等语法,语法比较简单。


以上的示例流程开始是接收JMS消息的组件。当接收成功后进入一个分支,先给在流程范围内的一个全局变量计数赋值为0,然后进入循环。在循环内部,调用一个子流程,计数加1,当计数大于5时退出循环;接收JMS消息失败后进入另一个分支,将错误信息写入文件。流程的XML    语法描述如下(删除和图形相关的语法,只保留流程逻辑的语法)

流程整体的描述:


 

主流程中赋值和写文件组件的描述:

 



流程开始时选择分支的描述:



流程结束的两个分支的描述:


循环是个大的组件,包含内部的组件。调用子流程和赋值组件的描述:



循环整体的描述:



循环内部连接的描述:


 

从以上的流程语法描述可以看到, Business Works流程使用<pd:activity name=""><pd:group name="">节点描述流程中的组件, <pd:transition>节点描述组件之间的连接。 对应图的概念,组件即是顶点,连接即是弧。起始组件是只有出度的顶点,结束组件是只有入度的组件。

看到以上的语法描述,可以很自然地想到一种流程引擎的执行方式:根据读入的流程描述构造一个AOV(Activity on vertex network), 这个图是有序无环图。流程由事件触发执行,从起始顶点出发,广度优先遍历整个图,每到达一个顶点就执行该顶点所对应的组件操作函数,直到结束顶点。不了解Business Works流程引擎的具体实现方式,在此不做多的描述。大家解决问题的思路大同小异,估计这类图形化流程引擎的实现都类似,可以参考一些开源的应用集成产品。

Business Works中,流程是要被执行的任务,由引擎的工作线程来执行。每一个工作线程轮询触发事件队列,取到一个触发事件实例后,就找到对应的流程执行之。执行完毕后再轮询事件队列,等待下一个事件的到来。引擎实例的工作线程数都是可以配置的。

补充一点,图形化流程的分支是可以并发的,这一点和程序流程不同。如下:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值