如何将Windows Workflow作为Web服务(.svc)托管?
发布时间:2020-12-13 21:27:01 所属栏目:Windows 来源:网络整理
导读:我正在尝试将 Windows工作流程作为Web服务托管,下面是我构建的示例工作流程,并希望作为Web服务(.svc)托管,是否可以建议所需的步骤? using System;using System.ServiceModel.Activities;using System.Activities;using System.ServiceModel;using System.Ac
我正在尝试将
Windows工作流程作为Web服务托管,下面是我构建的示例工作流程,并希望作为Web服务(.svc)托管,是否可以建议所需的步骤?
using System; using System.ServiceModel.Activities; using System.Activities; using System.ServiceModel; using System.Activities.Statements; namespace DemoWF { public class _25_LeaveRequest { public WorkflowService GetInstance() { WorkflowService service; Variable<int> empID = new Variable<int> { Name = "empID" }; Variable<int> requestID = new Variable<int> { Name = "requestID" }; Receive receiveLeaveRequest = new Receive { ServiceContractName = "ILeaveRequestService",OperationName = "ApplyLeave",CanCreateInstance = true,Content = new ReceiveParametersContent { Parameters ={ {"empID",new OutArgument<int>(empID)} } } }; SendReply replyLeaveRequestID = new SendReply { Request = receiveLeaveRequest,Content = new SendParametersContent { Parameters ={ {"requestID",new InArgument<int>(requestID)},},}; Sequence workflow = new Sequence() { Variables = { empID,requestID },Activities = { new WriteLine{Text="WF service is starting..."},receiveLeaveRequest,new WriteLine{ Text=new InArgument<string>(aec=> "Emp ID="+empID.Get(aec).ToString()) },new Assign<int>{ Value=new InArgument<int>(5),To=new OutArgument<int>(requestID) },new WriteLine{ Text=new InArgument<string>(aec=> "Request ID="+requestID.Get(aec).ToString()) },replyLeaveRequestID },}; service = new WorkflowService { Name = "AddService",Body = workflow }; return service; } } 现在,它是自我托管的,如下所示 namespace DemoWF { class Program { static void Main(string[] args) { LeaveRequest(); } private static void LeaveRequest() { _25_LeaveRequest receiveAndReplyWorkflow = new _25_LeaveRequest(); WorkflowService wfService = receiveAndReplyWorkflow.GetInstance(); Uri address = new Uri("http://localhost:8000/WFServices"); WorkflowServiceHost host = new WorkflowServiceHost(wfService,address); try { Console.WriteLine("Opening Service..."); host.Open(); Console.WriteLine("WF service is listening on " + address.ToString() + ",press any key to close"); Console.ReadLine(); } catch (Exception e) { Console.WriteLine("some thing bad happened" + e.StackTrace); } finally { host.Close(); } } } }
最快的方法是创建WCF工作流服务应用程序.
您将获得一个工作流设计器,您可以在其中拖放所需的活动: 如果您在Visual Studio中运行该项目,您将获得一个自动生成的WSDL与您的服务操作: 它还将调出Visual Studio的WCF测试客户端工具: 您可以使用“Pick Branch”活动创建一个基于工作流的服务来处理多种方法.然后,每个分支将具有“接收和发送回复”活动,其中接收活动移动到触发部分,并且动作部分中的发送回复活动. 每个触发器都用于服务的特定操作.在下面的示例中,我定义了两个操作:MyFirstOperation和MySecondOperation. 以下是WCF测试客户端工具将显示的工作流程中显示的多个操作: 希望这能让你开始.站起来基于工作流程的WCF服务的主题可以非常复杂. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- windows-server-2008 – RDP中“使用其他帐户”的键盘快捷方
- Qt在window下的环境变量PATH的配置
- Windows Server 2016-客户端加域准备工作
- xaml – ComboBox SelectedValue不显示
- windows – 用于构建qt的clang的mkspecs是什么?
- Apache服务器配置全攻略(目录)
- 将同一台计算机重新加入Windows域,无需域管理员权限
- windows-server-2003 – 在Amazon EC2上运行Windows域
- Windows窗体图片框中的图像转换
- windows-server-2008-r2 – 为什么使用不同用户通过PowerSh
推荐文章
站长推荐
- windows-installer – MSI – 卸载提供“Unident
- wpf – 我无法在库项目中添加对命名空间system.w
- windows-server-2012 – 如何配置ADFS 2.0以在使
- windows-server-2008 – Windows 2008或Windows
- Windows批处理 – 删除隐藏文件
- windows – 如何发现哪个进程让我的硬盘变得疯狂
- 如何获取焦点跟随 – 鼠标悬浮在emacs?
- windows – 如何删除本地管理员权限?
- .net – 如何防止Windows Forms TextBox在调整大
- windows – 如何生成一组用户所属的安全组列表?
热点阅读