信息化基础建设 消息引擎

消息引擎

1. 消息类型

2. 实现方法

 

消息类型

系统内置的实现,有二种类型,工作流消息和自定义消息。

工作流消息来自于工作流的设定,在不同的流程中,产生不同的讯息。比如,处理工程更改后,要通知工程部和生产部的相关负责人,这个功能直接在工作流中设置即可完成。

还有一类工作流消息,来自于系统内置的消息,比如,产生MRP运算之后,要产生大量的需求提示信息。在销售单过帐之后,也可发送邮件到仓库组,安排送货。

界面如下,Workflow Message和Custom Message.

clip_image002

Custom Message是用户直在此输入的消息,相当于一个内部通讯盒,当被通知的人员登陆ERP系统时,可以查看到通知消息。如下图所示

clip_image004

在工作流中,设定消息的界面如下, 这里的消息要2个要点

1 消息可以接受Macro,也就是用户可以定义一个Macro,设定Macro的取值规则,或从数据库,或从系统环境变量,取值后,当消息呈现在用户面前时,动态的赋值。

clip_image006

如图中所示,SECURITY_LEVEL就是Macro,在运行时,由环境给出变量值。

2 如果是条件式消息,比如满足条件A,发送消息”Got it”, 否则发送消息”Understood”, 条件表达式如下

clip_image008

这种消息机制实现的难点是,解析条件表达式。

 

实现方法

1. 直接用原生的SQL+ADO.NET,这样做最稳妥,新建立消息表Message, 用户表User,然后是实现保存,发送,新建立,并提供足够的接口封装,供各种情况下使用。

可能产生消息的程序,不是.NET程序,当提供Web Services方式供其他类型的程序调用。基本的原则是,外部程序对数据库表一无所知,只能操作接口,以达到稳定性和统一。

如果服务器暂时不可连接,可以缓存消息在要本地,待连接到服务器中时,再发送消息。

 

2. SQL Server Services Broker 实现

SQL Server 2005导入Services Broker技术,是另一种消息通讯的实现。而且有大量的内置特性,功能肯定会比自行开发的ADO.NET要强,可能唯一的遗憾是Services Broker只能在SQL Server 平台,不能移植到其他的数据库平台中去,另外,只有SQL Server 05才开始支持,而现在还有大量的用户在使用SQL Server 2000,。在可用性方面,比ADO.NET要差一些。

创建队列CREATE QUEUE InspectionQueue

创建服务 CREATE SERVICE InspectionService ON QUEUE InspectionQueue

发送消息

BEGIN TRAN

DECLARE @workRequest UNIQUEIDENTIFIER;

BEGIN DIALOG CONVERSATION @workRequest

FROM SERVICE InspectionService

TO SERVICE 'CentralMaintenanceService';

SELECT @workRequest;

DECLARE @workRequest UNIQUEIDENTIFIER;

SET @workRequest = '6AF33B51-EE4A-DA11-91C9-00904B8B6392';

SEND ON CONVERSATION @workRequest

('<WorkRequest>

<Action>ECN Posting</Equipment>

<Data>ECN00612001</Reason>

</WorkRequest>'

);

COMMIT TRAN

 

3. Message Queue. Windows内置的机制消息队列。

string queueName = @".\private$MSMQ";

if (!System.Messaging.MessageQueue.Exists(queueName))

{

MessageQueue queue=System.Messaging.MessageQueue.Create(queueName, true);

}

异步的接收

queue. ReceiveCompleted += new ReceiveCompletedEventHandler(QueueReceiveCompleted);

queue.BeginReceive();

EndReceive(asyncResult.AsyncResult);

posted @ 2011-06-13 09:24  信息化建设  阅读(2029)  评论(0编辑  收藏  举报