首页 > 代码库 > WWF类结构

WWF类结构

一、WorkflowRuntime类

  System.Workflow.Runtime.WorkflowRuntime是工作流的运行引擎。WorkflowRuntime在宿主中以自己独立的线程运行,它可以装在多个工作流实例,每个工作流实例在WorkflowRuntime有独立的线程。同一宿主可以实例化多个引擎,并且可以同时运行。

名称说明
AddService将指定的服务添加到工作流运行时引擎(WorkflowRuntime)中。
CreateWorkflow(Type)使用指定工作流创建新的工作流实例,有多个重载。
Dispose释放由 WorkflowRuntime 占用的资源。
GetAllServices(Type)检索实现或派生自指定的 Type 且添加到工作流运行时引擎的所有服务。
GetAllServices<T>()检索实现或派生自指定的泛型类型且添加到工作流运行时引擎的所有服务。
GetLoadedWorkflows获取一个集合,该集合包含当前加载到内存的所有工作流实例。
GetService(Type)从工作流运行时引擎中检索指定的 Type 的服务。
GetService<T>()从工作流运行时引擎中检索指定泛型类型的服务。
GetWorkflow检索具有指定 Guid 的工作流实例。
RemoveService从工作流运行时引擎中移除指定的服务。
StartRuntime启动工作流运行时引擎和工作流运行时引擎服务。
StopRuntime停止工作流运行时引擎和运行时服务。

  新建一个工作流如下:

  

  其代码如下:

    public sealed partial class Workflow1 : SequentialWorkflowActivity    {        public Workflow1()        {            InitializeComponent();        }        private void ExecuteCode1(object sender, EventArgs e)        {            MessageBox.Show("工作流已开始运行!");        }        private void ExecuteCode2(object sender, EventArgs e)        {            MessageBox.Show("会不会运行到我?");        }    }

  新建一个Winform两个按钮,代码如下:

    public partial class Form1 : Form    {        //定义工作流运行时引擎        WorkflowRuntime workflowRuntime = new WorkflowRuntime();        public Form1()        {            InitializeComponent();        }        private void button1_Click(object sender, EventArgs e)        {            //启动工作流运行时引擎            workflowRuntime.StartRuntime();            //用Type创建指定的工作流实例            WorkflowInstance workflowInstance = workflowRuntime.CreateWorkflow(typeof(WorkflowLibrary1.Workflow1));            //启动该工作流实例            workflowInstance.Start();        }        private void button2_Click(object sender, EventArgs e)        {            //获取该隐形上运行着的所有工作流            ReadOnlyCollection<WorkflowInstance> ListWorkflowInstance = workflowRuntime.GetLoadedWorkflows();            Guid guid = new Guid();            string NameStr = "";            foreach (WorkflowInstance item in ListWorkflowInstance)            {                NameStr += item.InstanceId + ";";                guid = item.InstanceId;            }            MessageBox.Show("此引擎上运行的所有工作流实例InstanceId" + NameStr);            //用Guid检索工作流            WorkflowInstance workflowInstance = workflowRuntime.GetWorkflow(guid);            MessageBox.Show("使用Guid检索出的工作流的类型为:" + workflowInstance.GetWorkflowDefinition().GetType().Name);            //停止工作流引擎并释放资源,这样一来Code2不会执行            workflowRuntime.StopRuntime();            workflowRuntime.Dispose();        }    }

 

WWF类结构