您的位置:首页 > 其它

使用windows workflow foundation 并发布为webservice

2008-09-16 16:36 357 查看
这里你主要是使用下面三个Activity-WebServiceInputActivity ,WebServiceOutputActivity 和WebServiceFaultActivity

创建的步骤:

1. 你必须创建一个Activity Library 的项目,否则你的Workflow不能被发布成一个Web Service
2. 拖入一个WebServiceInputActivity 到设计器中,设置InterfaceType,MethodName 和输入输出的属性 属性。
3. 增加其它的WF Activity 实现功能或流程,也可以将逻辑转到一个WebServiceFaultActivity 上
4. 拖入一个WebServiceOutputActivity作为输出
5. 发布这个项目到一个Web Services
注意事项:

1. WebServiceInputActivity 在一个Workflow中只有一个,因为它意味着Workflow从Web Service中接收数据,在发布时刻,意味这WebServiceInputActivity将把自己发布成一个Web Service的方法。当客户端调用时,WorkflowServ启动,并开始接收数据。
2. InterfaceType -你必须先申明一个接口,表示Workflow想要暴露的接口和方法,其实就是Web Service的WSDL 产生的依据
3. MethodName,有了InterfaceType,那么你就可以将一个WebServiceInputActivity 和接口中的一个方法对应起来。设置了MethodName 之后,就会出现Properties 域,意味这个方法可能有输入参数,你需要通过Workflow的参数或属性将方法的输入产生进行设置。
4. 因为有了InterfaceType,同时你又将接口中的一个方法和WebServiceInputActivity 对应起来,所以你需要代码或另外的Activity实现这个方法的功能,你可以在WebServiceInputActivity的InputReceived 方法中实现功能,也可以在WebServiceInputActivity 加入其它的Activity来实现Workflow的功能。
5. WebServiceFaultActivity 可以产生一个SOAP的异常到客户端,但是它不会终止工作流的运行,它和 ASMX Web Service的方法抛出一个异常是一样的。WebServiceFaultActivity 只对请求-应答(request-response)方式的Web Service起作用,另外如果Workflow Web Service工作的过程中,中断工作流,那么也会抛出一个SOAP的异常。
6. 实现了接口的功能之后,就可以使用WebServiceOutputActivity 输出结果作为Web Service的应答了。WebServiceOutputActivity 必须和一个WebServiceInputActivity配合使用,不能单独进行使用。WebServiceOutputActivity 有一个InputActivityName属性,就是要指明OutputActivity 和哪个WebServiceInputActivity 是配对的,设置完后会出现Properties 域,一般在这里设置RuturnValue 属性。WebServiceOutputActivity 还提供了一个方法SendingOutput ,这个方法一般是在WebServiceOutputActivity 执行前被调用,你可以再这里对输出的信息再进行一些处理和操作。
7. 这里要特别注意WebServiceInputActivity 和WebServiceOutputActivity 必须配对使用,而且一个WebServiceInputActivity和WebServiceOutputActivity 之间不要添加第二个WebServiceInputActivity,因为第一个WebServiceInputActivity还没有返回和输出,第二个WebServiceInputActivity又在等待第一个WebServiceInputActivity 输出和返回。
8. 一个Activity Library 可以暴露成一个Web Service,其中的每个WebServiceInputActivity/WebServiceOutputActivity对可以暴露成一个Web Service的方法,InterfaceType 则是客户端和服务器端的和约(Contract)
9. 发布是相当简单的,你只用在VS2005中选择当前的项目,然后选择 发布成一个Web Service,当完成后,会增加一个新的Web Service项目。如果你原来的Workflow项目是myWebServiceWorkflowLib.OrderServiceWorkflow ,那么会产生一个myWebServiceWorkflowLib.OrderServiceWorkflow__WebService 的Web Service项目,即增加一个后缀为__WebService 的ASP.NET Web Service项目,然后会自动添加一个web.config 配置Workflow到WorkflowWebHostingModule 方式,保证在ASP.NET的情况下workflow能正常初始化。

10.在***.csproj文件中,检查是否含有<Import Project="$(MSBuildExtensionsPath)/Microsoft/Windows Workflow Foundation/v3.0/Workflow.Targets" />结点,否则会产生错误,并将生成webservice失败.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐