无状态的工作流服务每次调用服务都会创建一个新的工作流实例。无状态的服务在客户端和服务器端不需要上下文交换。而有状态的则需要,
在下面的例子中我们开发一个有状态的工作流服务,我们使用WSHttpContextBinding。
1.首先定义IAddStatefulService接口,代码如下:
namespace CaryWFLib { [ServiceContract] public interface IAddStatefulService { [OperationContract] void StartWorkflow(); [OperationContract] Double Add(Double num1, Double num2); [OperationContract] void StopWorkflow(); } }
2.然后我们设计我们的工作流,我们这次使用状态机工作流,如下图:
ReceiveActivity的使用可以参考工作流服务Workflow Service(1):ReceiveActivity这篇文章。
3.我们在IIS中宿主该工作流服务,完成后可以使用如下代码进行测试。
namespace AddStatefulServiceConsole { class Program { static void Main(string[] args) { AddStatefulServiceClient client1 = new AddStatefulServiceClient(); AddStatefulServiceClient client2 = new AddStatefulServiceClient(); Console.WriteLine("Server endpoint: {0}",client1.Endpoint.Address.ToString()); client1.StartWorkflow(); client2.StartWorkflow(); double result; result = client1.Add(1, 2); Console.WriteLine("Client1 计算的结果为: {0}", result); result = client2.Add(1,2); Console.WriteLine("Client2 计算的结果为: {0}", result); client1.StopWorkflow(); client1.Close(); client2.StopWorkflow(); client2.Close(); Console.WriteLine("Press any key to exit"); Console.ReadKey(); } } }
4.除了使用上面的方法来调用工作流服务,我们还可是使用WF本身提供的SendActivity来调用工作流服务,我们新建一个顺序工作流控制
台项目。在工作流设计器中我们拖入SendActivity,如下图:
我们还是像使用ReceiveActivity同样的方式来设置SendActivity的ServiceOperationInfo属性,ChannelToken是每一个SendActivity必须要正确的
设置属性,通道令牌用来指定通道名称、通道范围和用于建立通道的终结点配置名称。Name属性为AddChannel,EndpointName属性为AddEndpoint,
该属性与App.config中的相对应,还有OwnerActivityName属性为SendWorkflow。OwnerActivityName和Nam属性决定WCF使用的通信通道,
我们的例子中所有的SendActivity的ChannelToken都是同样的设置,保证所有的服务操作都使用相同的通道,当相同的通道被使用,服务消息将会
在同一个工作流服务实例交换。
App.config如下:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.serviceModel> <bindings> <wsHttpContextBinding> <binding name="AddBindingConfig" openTimeout="00:00:30" sendTimeout="00:00:30" receiveTimeout="00:00:30" closeTimeout="00:00:30" > </binding> </wsHttpContextBinding> </bindings> <client> <endpoint address="http://localhost/CaryWFWCF/AddStatefulServiceWorkflow.svc" binding="WSHttpContextBinding" bindingConfiguration="AddBindingConfig" contract="CaryWFLib.IAddStatefulService" name="AddEndpoint"> </endpoint> </client> </system.serviceModel> </configuration>
5.测试程序如下:
namespace WorkflowConsoleSend { class Program { static void Main(string[] args) { using (WorkflowRuntime workflowRuntime = new WorkflowRuntime()) { AutoResetEvent waitHandle = new AutoResetEvent(false); workflowRuntime.WorkflowCompleted += delegate( object sender, WorkflowCompletedEventArgs e) { Console.WriteLine("result is {0}", e.OutputParameters["Result"]); waitHandle.Set(); }; workflowRuntime.WorkflowTerminated += delegate( object sender, WorkflowTerminatedEventArgs e) { Console.WriteLine(e.Exception.Message); waitHandle.Set(); }; //create channel manager service in order to manage and //reuse WCF channels. workflowRuntime.AddService(new ChannelManagerService()); Dictionary<String, Object> parameters = new Dictionary<string, object>(); parameters.Add("Num1", 1); parameters.Add("Num2", 2); WorkflowInstance instance = workflowRuntime.CreateWorkflow( typeof(WorkflowConsoleSend.SendWorkflow), parameters); instance.Start(); waitHandle.WaitOne(); Console.WriteLine("Press any key to exit"); Console.ReadKey(); } } } }
ChannelManagerService 负责根据在活动 ChannelToken 中定义的通道令牌,创建 SendActivity 的通道。
发表评论
-
平淡的2007
2007-12-24 08:04 813早上起来,送女朋友去公交车站,然后回来赶紧打开电脑,先 ... -
DreamSpark发布,高校学生免费使用Visual Studio 2008 Professional Edition 等微软软件
2008-02-20 13:23 1410今天上网无意中搜索到学生可以免费使用VS2008专业版,后来又 ... -
坚持学习WF(1):从HelloWorld开始
2008-04-04 16:30 887[置顶]坚持学习WF文章索 ... -
坚持学习WF(2):WF创作模式和设计时工具
2008-04-05 17:19 633[置顶]坚持学习WF文章索 ... -
坚持学习WF(3):WF框架概览
2008-04-08 07:27 781[置顶]坚持学习WF文章索 ... -
坚持学习WF(4):活动(Activity)和依赖属性(DependencyProperty)
2008-04-12 00:01 1141[置顶]坚持学习WF文章索引 活动(Activity) 活动 ... -
坚持学习WF(5):自定义活动(CustomActivity)
2008-04-13 15:25 918当WF提供的标准活动不能满足我们的需求的时候,我们就需要定义自 ... -
MOSS点滴(1):如何开发和部署feature
2008-04-16 21:35 834Features 是MOSS 2007以开箱即用的一套新功能, ... -
MOSS点滴(2):自定义Application Page
2008-04-19 20:07 841在MOSS中后台管理的页面都是Application Pag ... -
坚持学习WF(6):开发可复用的宿主程序
2008-04-21 21:45 692我们之前写工作流宿主 ... -
MOSS点滴(3):说说MOSS中的母版页
2008-04-25 21:15 1176MOSS中有两种页面:Site P ... -
MOSS点滴(4):实现Form认证
2008-04-29 21:12 701本文主要参考了网上的一些文章,但有些文章有些地方说的不是很明确 ... -
坚持学习WF(7):流程控制(Flow Control)
2008-04-30 18:10 828本文主要说说WF中和流 ... -
坚持学习WF(8):本地服务之调用外部方法
2008-05-09 08:17 753WF提供了一组核心服务 ... -
MOSS中的WebPart开发
2008-05-10 13:53 1053由于在asp.net1.1的时候asp.net中还没有webp ... -
坚持学习WF(9):本地服务之事件处理
2008-05-28 07:49 792[置顶]坚持学习WF文章索引 一:先来介绍两个活动 Even ... -
坚持学习WF(10):在工作流中使用关联
2008-06-01 13:03 686[置顶]坚持学习WF文章索 ... -
坚持学习WF(11):工作流通信与队列
2008-06-07 15:45 729[置顶]坚持学习WF文章索引 WF 提供的通信模型是构建于 ... -
MOSS中创建自定义内容类型
2008-06-12 20:23 1098一:简要介绍 某类内容 ... -
.NET中IDisposable接口的基本使用
2008-06-15 12:01 943首先来看MSDN中关于这个接口的说明: [ComVisible ...
相关推荐
工作流(WorkflowService)是泛微协同办公系统中一个关键组件,它提供了通过WebService接口与外部业务系统进行数据交互的能力。本使用说明旨在详细介绍如何利用这些接口进行有效的流程管理和任务处理。 1. **检查...
工作流(WorkflowService)WebService接口使用说明文档详细阐述了如何在泛微E8和E9版本的Ecology8、Ecology9系统中进行接口开发。这些接口主要用于企业级的工作流管理,提供了一套完整的Web服务解决方案,使得不同...
《疯狂Workflow讲义:基于Activiti的工作流应用开发》内容概括: 本书是一本介绍Java工作流领域的书,以Activiti为核心,内容囊括了多个流行的企业级Java EE框架,全书主要可分为以下几个部分。 第1部分:对...
工作流框架,通常被称为Workflow,是软件开发中的一个重要概念,它涉及到流程自动化、任务管理和业务规则的执行。在本文中,我们将深入探讨工作流框架的核心原理、应用领域以及如何使用和选择适合的工作流框架。 一...
1. **工作流基础概念**:了解工作流的基本元素,如活动(Activity)、工作流(Workflow)和工作流服务(Workflow Service)。 2. **工作流设计**:使用Visual Studio中的工作流设计器,可以直观地拖放活动,构建...
工作流(Workflow)是一种自动化业务过程的技术,它用于管理和控制信息在组织内部的流动,确保任务按照预定的规则和步骤有序进行。工作流实例则是这种技术的具体应用,它描述了一个具体的工作流程,包括各个任务的...
工作流(Workflow)是软件系统中用于自动化处理一系列任务或业务流程的技术,它允许开发者将复杂的业务逻辑分解为可管理的步骤。在Windows Forms(WinForms)应用中集成Workflow,可以构建用户友好的图形界面,同时...
"WorkFlow C++ 工作流图形"是一个专注于在C++环境中实现工作流管理的图形化库。工作流,简单来说,就是一系列按照特定顺序执行的任务或活动,它在企业管理、软件开发、流程自动化等领域中广泛应用。C++作为一门强大...
工作流(Workflow)是信息化系统中的一个重要概念,它主要用于描述业务流程自动化的过程。在这个入门实例中,我们将深入了解工作流的基本概念、工作流程的设计与实现,以及如何利用MyActivityLibrary这样的库来支持...
工作流(Workflow)是一种自动化处理任务的技术,它在IT领域被广泛应用,特别是在企业管理、项目协作和数据处理等方面。工作流的核心在于定义并管理业务过程,确保任务按照预设的规则和顺序有效地执行。在这个“请假...
2. 工作流模型:Workflow 4.0支持多种工作流模型,包括顺序流程、状态机流程和活动流程。这些模型可以帮助开发者根据实际业务需求选择最合适的方式来表达流程。 3. 工作流活动:活动是Workflow 4.0的基本构建块,每...
4. 工作流服务(Workflow Service):执行工作流实例,管理其生命周期。 5. 用户界面(UI):允许用户查看、签收和处理任务。 通过这个demo,开发者可以学习到如何在ASP.NET环境中集成工作流服务,如何设计和实现...
6. **工作流服务(WCF Workflow Services)**:结合Windows Communication Foundation(WCF),WF可以创建工作流服务,使得工作流可以通过Web服务接口与其他系统交互。 7. **宿主环境**:工作流需要在某个环境中...
工作流(Workflow)是信息化系统中的一个重要组成部分,它涉及到企业或组织内部的业务流程自动化管理。这个概念源自20世纪80年代,随着信息技术的发展,工作流管理系统(Workflow Management System, WfMS)逐渐成为...
工作流(Workflow)是一种自动化业务过程的技术,它允许在组织内部或跨组织执行一系列任务,按照预定义的规则和步骤进行。在IT领域,工作流引擎是实现工作流的核心组件,它负责管理和执行这些工作流程。C#是...
- **Workflow引擎**:执行工作流定义的后端服务。 - **工作流过程定义**:定义工作流逻辑的文件或数据库表。 - **支持的过程构造**:可使用的逻辑元素列表,如分支(Branch)、循环(Loop)等。 - **工作流定义加载...
5. **持久化与工作流服务**:掌握工作流的持久化机制,以及如何利用工作流服务(WCF Workflow Service)将工作流集成到服务导向架构中。 6. **工作流生命周期管理**:了解如何启动、暂停、恢复和终止工作流实例,...
Vue-Workflow-Chart开发用于可视化流程或工作流。 例如,在一家公司中,工作流程会变得非常复杂和混乱,因此插图可以帮助您理解流程。 由于工作流由状态和过渡组成,因此必须将这些元素传递到vue-workflow-chart。...
《深入理解dotnet-WorkflowCore:打造.NET标准的轻量级工作流引擎》 在.NET开发领域,WorkflowCore是一款备受瞩目的轻量级工作流引擎,它专为.NET标准设计,旨在简化工作流的实现与管理。本文将深入探讨Workflow...