您的位置:首页 > 其它

WF工作流与Web服务的相互调用 —— 以InvokeWebServiceActivity在Workflow工作流调用Web服务

2021-05-01 00:17 405 查看

   WF工作流与Web服务的相互调用 —— 以InvokeWebServiceActivity在Workflow工作流调用Web服务            

在前面两篇文章里面已经为大家介绍过如何在Web服务调动Workflow工作流,在这篇文章为大家介绍如何通过InvokeWebServiceActivity在Workflow中调动Web服务。通过Web服务与 Workflow工作流的相互调用,可以实现多个复杂的业务层的开发。

在前面两篇文章里面已经为大家介绍过如何在Web服务调动Workflow工作流,在这篇文章为大家介绍如何通过InvokeWebServiceActivity在Workflow中调动Web服务。

下面还是以最简单的Hello World作为例子:

首先开发一个ASMX服务

View Code

<%@ WebService Language="C#" CodeBehind="~/App_Code/WebServiceForWorkflow.cs"class="WebServiceForWorkflow"%>

[WebService(Namespace ="http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
//若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
// [System.Web.Script.Services.ScriptService]
publicclass WebServiceForWorkflow : System.Web.Services.WebService {
public WebServiceForWorkflow () {
//如果使用设计的组件,请取消注释以下行
//InitializeComponent();
   }

   [WebMethod]
publicstring HelloWorld() {
return"Hello World";
   }  
}

然后在Workflow文件里面加入InvokeWebServiceActivity活动

现在通过URL属性添加对Web服务的引用“http://localhost:5500 /WebServiceForWorkflow.asmx”,此时系统会自动生成代理去管理此服务。然后设置MethodName为 HelloWorld,把ReturnValue设置为data。

最后为invokeWebServiceActivity1添加处理方法invokeWebServiceActivity1_Invoked

View Code

namespace Microsoft.Workflow
{
publicsealedpartialclass Workflow3 : SequentialWorkflowActivity
   {
publicstring data;

public Workflow3()
       {
           InitializeComponent();
       }

privatevoid invokeWebServiceActivity1_Invoked(object sender, InvokeWebServiceEventArgs e)
       {
           Console.WriteLine(data);
       }
   }
}

这时候配置好config文件

View Code

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="Microsoft.Workflow.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
sectionGroup>
configSections>
<applicationSettings>
<Microsoft.Workflow.Properties.Settings>
<setting name="Microsoft_Workflow_WebServiceForWorkflow"
               serializeAs="String">
<value>http://localhost:5500/WebServiceForWorkflow.asmx

//此处是Web服务的引用地址

setting>
Microsoft.Workflow.Properties.Settings>
applicationSettings>
configuration>

现在可以对Workflow进行一下测试

View Code

staticvoid Main(string[] args)
{
using (WorkflowRuntime runtime =new WorkflowRuntime())
           {
               runtime.StartRuntime();
               WorkflowInstance instance = runtime.CreateWorkflow(typeof(Workflow3), null);
               instance.Start();
               AutoResetEvent wailHandler =new AutoResetEvent(false);
               wailHandler.WaitOne(1000);
               Console.ReadLine();
           }
}

通过这个的开发实例,大家可以认识到如何使用InvokeWebServiceActivity调用Web服务。总而言之,通过Web服务与 Workflow工作流的相互调用,可以实现多个复杂的业务层的开发。在下一篇文章将为大家介绍如何在WCF与Workflow工作流之间实现相互调用, 协调工作。


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: