因为BT2006从BizTalk移开后,我们正在考虑把它放回组织。 一个挫折我早期的是,当处理西隧HL7和业务流程,我们需要为每个ADT消息类型的单独编排,即使每种类型的模式在本质上是一样的,每个业务流程做了同样的事情。 展望未来,进入2010年的BizTalk的世界,在这里什么改善? 有没有我可以利用使用一个单一的业务流程对所有ADT类型的模式?
Answer 1:
在BizTalk HL7消息一直保持自2006年发布基本不变。 原因是BizTalk定义了每个消息和事件型架构(如ADT ^ A01,ADT ^ A03,ADT ^ A08),而不是只为每个消息类型 (例如ADT,BAR,MDM),您的映射和业务流程迅速成为一个烂摊子。
以下是我在过去所做的那样,以绕过这个限制:
- 允许将邮件来非类型化的编排。 所设置的消息类型= System.Xml.XmlDocument。 我发现,一般情况下,我只解析出或更新几个元素感兴趣,所以我只写了几个通用的LINQ语句的助手库去,我需要的数据。 这样一来,我可以写到达PID-3(病人ID号)LINQ的声明,我将能够在任何消息或事件类型一致地使用它,因为PID保持不变。 同样,我会用同样的方法来更新的消息也是如此。 如果在你正在寻找更新,或者如果你正在寻找读/更新大量数据领域的大结构上的差异这种技术不工作的伟大。
- 创建主/规范HL7消息类型模式。 这需要更多的工作,但是这取决于你正在寻找有多少消息类型来处理,这样才能真正还清,并与医疗机构如何看待他们的HL7接口更加一致。 为了做到这一点,你需要定义一个消息类型的新模式,并包括该消息的所有可能的片段。 所以,与其具有多ADT类型定义,你就滚所有可能的变化为A01,A03,A04等一个主模式下。 这将让你大大减少所需的映射和解析逻辑的量。 不幸的是,因为这不是HL7加速器的默认行为,将需要一些定制的管道和编排逻辑来实现。 基本上,你将需要修改一些属性来获得加速器认为你的新主人消息是有效的。
对于大多直通接口,我会推荐技术#1。 否则,如果您生成或者需要基本上消耗在一个标准的方式任何消息事件,技术#2能够在长期内还清。
Answer 2:
当我看到它,你这里有两种可能性。
- 对待该消息是匿名的。 这意味着你的消息是“非类型化”(声明它作为System.Xml.XmlDocument类型)。 然后你的编排可以查询以决定它是什么类型的信息。
- 创建(使用XSD选择组选择)的信封邮件,其主体可以是所有可能的消息类型。 然后,您的业务流程处理信封邮件类型。 通过这种方法,你可以在信封头设置一个值声明包含在信封的身体类型。
我宁愿第二个; 而可以肯定的是更多的工作(你需要用一个信封全部入站消息)它可以让你了解的信息是通过看信封头的东西。 这意味着你仍然可以通过消息类型的路由,如果你需要。
文章来源: Biztalk message agnostic orchestration