【问题标题】:How to execute a stored proc once after processing EDI file in BizTalk?在 BizTalk 中处理 EDI 文件后如何执行一次存储过程?
【发布时间】:2012-01-29 11:50:33
【问题描述】:

这更像是一个一般的架构问题;我有一些想法,但我认为我们不可能是唯一需要这样做的人。

通过 BizTalk 处理 HIPAA EDI 文件(例如 837 医疗保健索赔)时,它被拆分为多个索赔文件,并且它所经历的任何业务流程都同时运行(实际上)。在将每个声明存储到数据库后,我只需要执行一次存储过程,因此 proc 显然无法从保存数据的同一编排中执行。

建议?谢谢!

比尔

【问题讨论】:

  • 从 11 个问题中获得两个答案?如果您返回之前的问题并标记最佳答案,您可能会发现您得到了更多答案。
  • 您使用的是什么 DBMS?你有任何第三方适配器吗?
  • MS SQL 后端,只使用标准的 EDIreceive 管道

标签: biztalk edi


【解决方案1】:

一种方法是在存储声明的数据表上使用插入触发器。

一方面,这是满足您要求的非常简单的解决方案。但是,您必须确保它是有据可查的。内置在触发器中的功能可能难以维护。

【讨论】:

  • 我看不出插入触发器是如何工作的 - 每次将声明插入该表时它都会触发;它如何知道最后一个声明何时插入?
【解决方案2】:

我可以想到几个选项,但我不知道如何保证您处理所有文件而不按顺序处理文件或先检查文件以了解索赔数量。几个选项:

  1. 与其让管道进行拆分,不如在业务流程中进行拆分并按顺序而不是并行处理它们。
  2. 再次让一​​个业务流程进行拆分,但在开始拆分之前计算文档的数量,并有一个单独的进程轮询要提交到数据库的文档数量。这将允许您至少异步触发所有子文档。
  3. 创建一个管道组件,在允许 EDI 组件进行拆分之前检查文档,并且与上述类似,有一个单独的流程轮询以完成所有声明。

似乎这里最大的问题是如果其中一个声明失败你会怎么做,如果你只想在完整文件完成时提交,你将需要一些回滚策略。

【讨论】:

  • #1 可能是我们最终要使用的 - 它解决了何时执行 proc 的问题并且都可以处理回滚......
【解决方案3】:

我们决定使用单个(而不是多个)HIPAA 模式,因此声明文件被转换为包含多个 2000A 循环的单个 XML 消息。然后我们遍历这些循环,将它们映射进去,并在完成时触发 proc。

【讨论】:

    猜你喜欢
    • 2011-02-24
    • 2011-06-18
    • 2012-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-15
    相关资源
    最近更新 更多