BizTalk 2009 - 如何在从大型反汇编文件处理所有消息后运行进程

时间:2013-12-02 17:02:33

标签: biztalk biztalk-2009

我们每天以各种格式(即CSV,Excel,XML等)接收许多大型数据文件。为了处理这些大型文件,我们将传入的数据转换为我们的标准“集合”消息类之一(使用XSLT和管道组件 - 内置或自定义),将大型转换后的消息反汇编为单独的“对象”消息和然后调用一系列SOAP Web服务方法来处理业务逻辑和数据库操作。

与收到的其他文件不同,最新文件每天都会包含所有数据行,因此,我们必须处理这些差异,以防止每天重新处理相同的记录。

我有一个合适的机制来处理插入和更新,但我目前正在努力处理删除(记录存在于数据库中但不存在于最新文件中)。

我当前的思维过程是在整个过程结束时使用“清理”任务标记数据库中已删除的记录,但这需要在反汇编文件中的所有“对象”消息完成后调用方法

是否可以监视来自多记录文件的单个消息并在完成整个文件时调用方法?目前,所有研究都指向具有某种“等待”的编排,但这是唯一的选择吗?

示例:文件包含100个车辆记录。这被分解为100个单独的XML消息,这些消息使用100次调用Web服务方法进行处理。希望在完成所有100条消息后调用清理操作。

2 个答案:

答案 0 :(得分:1)

我发现处理“每天所有行”方案的最佳方法是在SQL Server中预先放置数据,以便更容易将“当前”设置与“上一组”进行比较。 INTERSECT和EXCEPT操作符在大多数情况下都非常简单。

然后用轮询声明排空记录。

答案 1 :(得分:0)

执行取消批处理的组件需要发布批处理消息的开头,其中包含单个记录的数量和相关键。

执行插入和组件的组件更新将需要在完成处理时发布具有相同关联键的完成消息。

批处理消息的开始将启动一个Orchestration,它将使用该关联键监听完成消息并计算该数字,并且在收到正确的数字之后或者在超时期限之后它将调用清理或者提出异常。