WF工作流技术内幕 —— 以InvokeWebServiceActivity在Workflow工作流调用Web服务
2012-05-03 11:22
561 查看
在前面两篇文章里面已经为大家介绍过如何在Web服务调动Workflow工作流,在这篇文章为大家介绍如何通过InvokeWebServiceActivity在Workflow中调动Web服务。下面还是以最简单的Hello World作为例子: 首先开发一个ASMX服务<%@ 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]
public class WebServiceForWorkflow : System.Web.Services.WebService {
public WebServiceForWorkflow () {
//如果使用设计的组件,请取消注释以下行
//InitializeComponent();
}
[WebMethod]
public string HelloWorld() {
return "Hello World";
}
} 然后在Workflow文件里面加入InvokeWebServiceActivity活动
现在通过URL属性添加对Web服务的引用“http://localhost:5500/WebServiceForWorkflow.asmx”,此时系统会自动生成代理去管理此服务。然后设置MethodName为HelloWorld,把ReturnValue设置为data。
最后为invokeWebServiceActivity1添加处理方法invokeWebServiceActivity1_Invokednamespace Microsoft.Workflow
{
public sealed partial class Workflow3 : SequentialWorkflowActivity
{
public string data;
public Workflow3()
{
InitializeComponent();
}
private void invokeWebServiceActivity1_Invoked(object sender, InvokeWebServiceEventArgs e)
{
Console.WriteLine(data);
}
}
} 这时候配置好config文件<?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</value> //此处是Web服务的引用地址
</setting>
</Microsoft.Workflow.Properties.Settings>
</applicationSettings>
</configuration> 现在可以对Workflow进行一下测试 static void 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工作流之间实现相互调用,协调工作。
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
//若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
// [System.Web.Script.Services.ScriptService]
public class WebServiceForWorkflow : System.Web.Services.WebService {
public WebServiceForWorkflow () {
//如果使用设计的组件,请取消注释以下行
//InitializeComponent();
}
[WebMethod]
public string HelloWorld() {
return "Hello World";
}
} 然后在Workflow文件里面加入InvokeWebServiceActivity活动
现在通过URL属性添加对Web服务的引用“http://localhost:5500/WebServiceForWorkflow.asmx”,此时系统会自动生成代理去管理此服务。然后设置MethodName为HelloWorld,把ReturnValue设置为data。
最后为invokeWebServiceActivity1添加处理方法invokeWebServiceActivity1_Invokednamespace Microsoft.Workflow
{
public sealed partial class Workflow3 : SequentialWorkflowActivity
{
public string data;
public Workflow3()
{
InitializeComponent();
}
private void invokeWebServiceActivity1_Invoked(object sender, InvokeWebServiceEventArgs e)
{
Console.WriteLine(data);
}
}
} 这时候配置好config文件<?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</value> //此处是Web服务的引用地址
</setting>
</Microsoft.Workflow.Properties.Settings>
</applicationSettings>
</configuration> 现在可以对Workflow进行一下测试 static void 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工作流之间实现相互调用,协调工作。
相关文章推荐
- WF工作流技术内幕 —— 以InvokeWebServiceActivity在Workflow工作流调用Web服务
- WF工作流与Web服务的相互调用 —— 以InvokeWebServiceActivity在Workflow工作流调用Web服务
- WF工作流技术内幕 —— 通过Web服务调用Workflow工作流
- WF工作流技术内幕 —— 通过Web服务调用Workflow工作流
- WF工作流技术内幕 —— 通过Web服务调用Workflow工作流(基础实例)
- 转:WF工作流技术内幕 —— 通过Web服务调用Workflow工作流(开发持久化工作流)
- WF工作流技术内幕 —— 通过Web服务调用Workflow工作流(开发持久化工作流)
- delphi调用C#写的web服务例子-----------(重点 InvRegistry.RegisterInvokeOptions(TypeInfo(ServiceSoap), ioDocu
- WF工作流与Web服务的相互调用 —— 通过Web服务调用Workflow工作流(基础实例)
- delphi调用C#写的web服务例子-----------(重点 InvRegistry.RegisterInvokeOptions(TypeInfo(ServiceSoap), ioDocument);)
- WF从入门到精通(第十八章):在你的工作流中调用Web服务
- WF工作流技术内幕 —— WF与WCF互相调用(利用ReceiveActivity把WF发布为WCF)
- WF工作流与Web服务的相互调用 —— 通过Web服务调用Workflow工作流(开发持久化工作流)
- 【翻译】WF从入门到精通(第十八章):在你的工作流中调用Web服务
- 工作流(WF)中使用SqlWorkflowPersistenceService创建完全的持久性服务
- WF工作流与Web服务的相互调用 —— WF与WCF互相调用(利用ReceiveActivity把WF发布为WCF)
- WF工作流技术内幕 —— WF与WCF互相调用(利用ReceiveActivity把WF发布为WCF)
- 关于 C# 调用 JavaWebservice服务,版本不一致的问题
- Java WebService 简单实例、调用第三方提供的webService服务
- Web-Service-调用服务的方式