扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:中国IT实验室 来源:中国IT实验室 2007年8月24日
关键字:
这个控件的实现使用了JMS QueueBrowser类来查看一个带有给定的JMS连接工厂的给定JMS队列。它返回队列中等待处理的实例个数。本文所附的代码中提供了完整实现。
启动和停止工作流的Web服务
为了启动和停止负责把工作单元分发给请求队列的WebLogic Integration流程,我们创建了一个Java Web Service (JWS),它服从JSR 181,带有两个方法。public classControlWebService implements
com.bea.jws.WebService {
/**
* @common:control
*/
private Controls.JMSStopControlMessage JMSStopControl;
/**
* @common:control
*/
private Controls.JMSControlMessage JMSControl;
static final long serialVersionUID = 1L;
/**
* @common:operation
*/
public void startFlow() {
JMSControl.subscribe();
JMSControl.sendTextMessage("start");
JMSControl.unsubscribe();
}
/**
* @common:operation
*/
public void stopFlow() {
JMSStopControl.subscribe();
JMSStopControl.sendTextMessage("stop");
JMSStopControl.unsubscribe();
}
}
该Web服务不是直接调用工作流,而是把一条消息放在JMS队列中,然后调用Worker.Message把消息发送给分发JPD。这解除了Web服务实现与工作流之间的耦合,以保持其模块性。在WebLogic Integration中,有一个概念叫做事件生成器,可以使用WebLogic Integration Administration Console对它进行配置您可以把事件生成器配置为从JMS Worker.Message中取出消息,然后将其交付给一个Message Broker通道(逻辑概念)。分发工作流监听/UnitOfWork/StartWorkflow通道,该通道被绑定在与JMS Worker.Message队列相关联的JMS事件生成器上。只要有一个String “start”消息交付到此通道上,工作流就会开始工作。类似地,开始之后,分发工作流就会在它的一个Event Choice节点中监听Message Broker通道(/UnitOfWork/StopWorkflow),以便从Worker.StopMessage JMS队列接收”stop”消息。然后,事件生成器再次把Worker.StopMessage队列上的JMS消息关联到/UnitOfWork/StopWorkflow通道,以便交付消息。
濡傛灉鎮ㄩ潪甯歌揩鍒囩殑鎯充簡瑙T棰嗗煙鏈€鏂颁骇鍝佷笌鎶€鏈俊鎭紝閭d箞璁㈤槄鑷抽《缃戞妧鏈偖浠跺皢鏄偍鐨勬渶浣抽€斿緞涔嬩竴銆�