将消息从webservice推送到biztalk业务流程

时间:2010-09-09 11:26:46

标签: wcf biztalk

我创建了一个BizTalk业务流程,它将消息发送到wcf webservice,webservice在sharepoint上创建一个任务,业务流程接收响应(只是一个字符串“succes”)。 现在,当有人将任务更改为“完成”时,我还在sharepoint中创建了一个eventhandler,可以执行某些代码。 我希望能够在某人“完成”任务时向biztalk业务流程发送消息。我怎么能这样做?

我可以从sharepoint调用webservice,但是如何将消息推送到biztalk业务流程? 如果我在我的业务流程中“使用wcf服务”,则会创建一个发送 - 接收端口,但我只想从Web服务“接收”该消息。 因此,Web服务必须将消息推送到业务流程。

谢谢

3 个答案:

答案 0 :(得分:3)

如果我理解正确,您使用WCF服务将任务发送到SharePoint(您可以使用BizTalk SharePoint Adapter直接执行此操作 - 我已经使用过它,但我认为这是一种它可以做的事情)。当任务标记为完成时,SharePoint中的事件处理程序将触发,然后将消息发送回BizTalk。

要将消息发回BizTalk,您需要创建WCF接收位置。此接收位置可以是单向或双向。这些都是双向接收端口。端口通过WCF从SharePoint接收消息,然后将repsonse发送回SharePoint以确认收据。如果BizTalk仅发送回ACK,则认为它是单向接收端口。如果它发送回ACK和消息,它认为它是双向接收端口。

简而言之,您需要在业务流程中设置第二个接收端口。将其发布为WCF Web服务。您还需要设置关联,以便消息可以找到返回正确的业务流程实例的路径。这是一篇关于相关性的好文章:http://mstecharchitect.blogspot.com/2009/03/message-correlation-in-biztalk-2006.html

成功关联的关键是在每条消息中都有一个提升属性,可用于将它们绑定回togeather。因此,您发送给SharePoint的任务应该具有唯一的TaskID(或其他)。并且SharePoint的响应应该在repsonse中具有相同的提升属性。

答案 1 :(得分:1)

只是添加到Chris的帖子(+1) - BizTalk非常灵活地将您从Sharepoint中的工作流程中的成功(或失败)返回到业务流程 - 您可以使用从使用目录编写文件的任何内容文件适配器,通过电子邮件发送到SMTP接收端口,在数据库中写入记录以及使用SQL适配器从BizTalk轮询。

要将业务流程(或接收端口)公开为WCF服务,最简单的方法是使用WCF发布向导(Visual Studio中的“工具| WCF发布向导”)。 这将指导您在BizTalk中创建端口,并在IIS下发布Web服务和Mex / WSDL。通过此,您可以从Sharepoint应用程序添加Web /服务参考。一个问题是确保IIS下的应用程序正在运行。请注意,也可以让BizTalk直接托管WCF,但这有点复杂。

答案 2 :(得分:0)

您尝试使用的网络服务是什么样的?它有返回值吗?你可以像在其他情况下一样发回“成功”。