WF工作流技术内幕 —— 通过Web服务调用Workflow工作流(基础实例)
来源:互联网 发布:用手机淘宝代卖怎么做 编辑:程序博客网 时间:2024/05/16 13:53
在开发一个企业ERP系统时,其业务流程是开发的关键,系统往往会将开发好的业务方案发布为Web服务以供外界调用。客户可以通过服务器,互联网等等方式去调用服务,而解决业务上需要及信息的交换问题。有见及此,微软在.NET 3.0基础上发布了WF,WCF,以及WCS,WPF(为开发表现层而设)。WF,WCF正是解决企业核心问题的关键,通过WF可以轻松地轻松地按照业务逻辑去实现开发,然后凭借WCF的强大功能把同一服务绑定多个不同的EndPoint,这样客户端与服务与服务器端通讯就不会再受开发语言的影响。
在这章里面只是为你讲述如何将WF与Web Service结合使用,而关于WF的开发的详细介绍请参考(WF技术内幕)。WF与Web Service相互调用分为两情况:
- 当客户只希望传入一些基础数据,而直接获取计算结果时,我们可以将WF发布为一个Web Service,这样就可以将WF实现的功能公开到互联网上,通过Web服务可以解决服务器与客户端之间开发语言的束缚。
- 当工作流的每个操作步骤都需要调用Web服务来获取结果时,我们则可以使用InvokeWebServiceWorkflow在工作流中调用Web Service来实现(具体操作可参考通过InvokeWebServiceActivity在Workflow工作流中调用Web服务 )。
在开发中小型ERP开发初期,往往都会把重点放在业务流程上,只要深入了解企业的业务流程后,将DAL实现为最基础的单表操作,然后就可以轻松地以WF实现业务层的开发,最后就可以把WF作为服务公布在互联网上(当然在构建中大型系统时,会实现多层开发模式,使用工作流直接去实现业务逻辑,最后以Web Service方式公开服务)。
而在这里,重点不是介绍ERP的开发,而只是想介绍一下如何将WF公开为Web服务,下面我们还是以“Hello World”为例子。
首先开发一个接口
namespace Microsoft.IService
{
public interface IService_T1
{
string DoWork();
}
}
然后新建一个顺序工作流,分别插入WebServiceInputActivity和WebServiceOutputActivity作为启动,结束项。WebServiceInputActivity是服务的启动标记,而WebServiceOutputActivity是服务的结束标记。
注意,把webServiceInputActivity1的InActivating设置为True,这是证明webServiceInputActivity1为此工作流的启动项的标志。然后InterfaceType设置为对应接口Microsoft.IService.IService_T1,将MethodName方法名设置为DoWork
在工作流的方法中设置codeActivity的执行方法里面设置方法内容
namespace Microsoft.Workflows
{
public sealed partial class Workflow4 : SequentialWorkflowActivity
{
public string Data;
public Workflow4()
{
InitializeComponent();
}
private void codeActivity1_ExecuteCode(object sender, EventArgs e)
{
Data = "Hello World";
}
}
}
最后,在webServiceOuputActivity的InputActivityName设置为webServiceInputActivity1,表示通过webServiceOutputActivity1来结束webServiceInputActivity1,然后把ReturnValue属性设置为Data
这时候,基础的设置已经完成,现在在项目属性上选择“作为Web服务发布”。
此时,系统会自动把Workflow发布为*.asmx,生成的.asmx文件如下:
<%@ WebService Class="Microsoft.Workflows.Workflow4_WebService" %>
//此处Class名称与Workflow的空间名和类名相对应
再为服务添加必要的配置文件:
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="WorkflowRuntime" type="System.Workflow.Runtime.Configuration.WorkflowRuntimeSection, System.Workflow.Runtime, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</configSections>
<WorkflowRuntime Name="WorkflowServiceContainer">
<Services>
<add type="System.Workflow.Runtime.Hosting.ManualWorkflowSchedulerService, System.Workflow.Runtime, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add type="System.Workflow.Runtime.Hosting.DefaultWorkflowCommitWorkBatchService, System.Workflow.Runtime, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add type="System.Workflow.Runtime.Hosting.SqlWorkflowPersistenceService, System.Workflow.Runtime, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" UnloadOnIdle="true" LoadIntervalSeconds="5" ConnectionString="Data Source=LESLIE-PC;Initial Catalog=WorkflowPersistence;Integrated Security=True"/>
//这里是为Workflow添加SQL数据库持久化服务,这是可选设置。
</Services>
</WorkflowRuntime>
<appSettings/>
<connectionStrings/>
<system.web>
<compilation debug="true"/>
<authentication mode="Windows"/>
<httpModules>
<add type="System.Workflow.Runtime.Hosting.WorkflowWebHostingModule, System.Workflow.Runtime, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" name="WorkflowHost"/>
</httpModules>
</system.web>
</configuration>
这时候在网络上第一次调用服务时,系统会正常操作。
对NET系统开发有兴趣的朋友,请加入QQ群:NET技术开发联盟 59557329 一起讨论
WF工作流技术内幕 —— 通过Web服务调用Workflow工作流(基础实例)
WF工作流技术内幕 —— 通过Web服务调用Workflow工作流(开发持久化工作流)
WF工作流技术内幕 —— 通过InvokeWebServiceActivity在Workflow工作流中调用Web服务
WF工作流技术内幕 —— WF与WCF互相调用(利用ReceiveActivity把WF发布为WCF)
- WF工作流技术内幕 —— 通过Web服务调用Workflow工作流(基础实例)
- WF工作流技术内幕 —— 通过Web服务调用Workflow工作流
- WF工作流技术内幕 —— 通过Web服务调用Workflow工作流
- WF工作流技术内幕 —— 通过Web服务调用Workflow工作流(开发持久化工作流)
- WF工作流技术内幕 —— 以InvokeWebServiceActivity在Workflow工作流调用Web服务
- WF工作流技术内幕 —— 以InvokeWebServiceActivity在Workflow工作流调用Web服务
- WF工作流技术内幕 —— WF与WCF互相调用(利用ReceiveActivity把WF发布为WCF)
- WF工作流技术内幕 —— WF与WCF互相调用(利用ReceiveActivity把WF发布为WCF)
- WF从入门到精通(第十八章):在你的工作流中调用Web服务
- wf 工作流 调用服务返回datatable
- Workflow学习 - 工作流调用工作流
- wf工作流——基础活动(带详细文档说明)
- 《WF编程》系列之4 - 漫游工作流:Widows Workflow Runtime及其服务
- WF从入门到精通(第十九章):把工作流发布为Web服务
- WF - 状态机工作流的workflow实例状态与业务实体状态的对应
- 工作流(WorkFlow)小记
- 工作流(Workflow)简介
- 工作流(Workflow)简介
- C#和C++的主要区别
- JAVA-用HttpClient来模拟浏览器GET,POST (1)
- arm linux板级移植
- JAVA 获取http返回XML的数据
- 无法启动world wide web publishing service服务 错误:127 找不到指定的程序 解决办法
- WF工作流技术内幕 —— 通过Web服务调用Workflow工作流(基础实例)
- 求解隐函数的全部解、非线性方程(组)的全部解
- Android 源码编译 文件系统制作
- fstream的使用方法介绍
- 2道关于委托事件的使用的例子
- 利用fstream 读写二进制文件
- JQuery JSON数据缓存问题解决
- 精通注册表视频教程
- fstream的简单用法