建立一个空的解决方案,向其中加入一个顺序工作流类库和一个Asp.Net Web 应用程序项目,结果如下图


向asp.Net 程序中,添加引用,“WF”是工作流项目,如图


向Web.Config 中加入WF的注册(细节下载代码看一下)。

<section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />                 </sectionGroup>             </sectionGroup>         </sectionGroup>          <!--WF注册服务-->         <section name="WorkflowRuntime" type="System.Workflow.Runtime.Configuration.WorkflowRuntimeSection, System.Workflow.Runtime, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>         <!--技术WF注册服务-->      </configSections>          <!--WF注册服务-->      <WorkflowRuntime Name="WorkflowServiceContainer">         <Services>             <add type="System.Workflow.Runtime.Hosting.ManualWorkflowSchedulerService, System.Workflow.Runtime, Version=3.0.00000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>             <add type="System.Workflow.Activities.ExternalDataExchangeService, System.Workflow.Activities, Version=3.0.00000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>                      </Services>     </WorkflowRuntime>     <!--结束注册服务-->       <appSettings/>     <connectionStrings/>



添加一个全局Global.asax 文件,添加如下代码

protected void Application_Start(object sender, EventArgs e)        {                        WorkflowRuntime workflowRuntime = new WorkflowRuntime("WorkflowRuntime");            workflowRuntime.StartRuntime();            Application["WorkflowRuntime"] = workflowRuntime;          }         protected void Session_Start(object sender, EventArgs e)        {            WorkflowRuntime workflowRuntime = Application["WorkflowRuntime"] as WorkflowRuntime;            workflowRuntime.StopRuntime();         }

向Default.aspx中添加3个控件,Textbox,button,label ,双击Button为其添加单击事件,并在default.aspx.cs 中添加如下代码


using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls;  using System.Workflow.Runtime; using System.Workflow.Runtime.Hosting; using System.Workflow.ComponentModel; using System.Workflow.Activities; namespace AspNet {     public partial class _Default : System.Web.UI.Page     {         string Result = string.Empty;         protected void Page_Load(object sender, EventArgs e)         {          }          protected void Button1_Click(object sender, EventArgs e)         {             StartWorkflow();             Label1.Text = Result;         }          private void StartWorkflow()         {             WorkflowRuntime workflowRuntime = Application["WorkflowRuntime"] as WorkflowRuntime;               ManualWorkflowSchedulerService scheduler = workflowRuntime.GetService(typeof(ManualWorkflowSchedulerService)) as ManualWorkflowSchedulerService;              workflowRuntime.WorkflowCompleted += new EventHandler<WorkflowCompletedEventArgs>(workflowRuntime_WorkflowCompleted);              Dictionary<String, Object> wfPara = new Dictionary<string, object>();              wfPara.Add("Name", TextBox1.Text);              WorkflowInstance workflowInstance = workflowRuntime.CreateWorkflow(typeof(WF.Workflow1), wfPara);              workflowInstance.Start();              scheduler.RunWorkflow(workflowInstance.InstanceId);         }          void workflowRuntime_WorkflowCompleted(object sender, WorkflowCompletedEventArgs e)         {             if (e.OutputParameters.ContainsKey("Result"))             {                 Result = (string)e.OutputParameters["Result"];             }          }      } }


好了,下面,在WF项目中的Workflow1,拖入一个Code控件,如下图


为CodeActivety1.添加事件代码,方法名字可以自己取,也可以用默认的,我这里用了一个Exefun的方法名,


代码如下


namespace WF {     public sealed partial class Workflow1 : SequentialWorkflowActivity     {          public string Name { get; set; }          public string Result { get; set; }           public Workflow1()         {             InitializeComponent();         }          private void ExeFun(object sender, EventArgs e)         {             Result = "你好:" + Name;         }     }  }

好了,编译一下程序,在TextBox中输入字符串,点击按钮看一下。