官术网_书友最值得收藏!

Creating a WF program using C# Code

In this task, we will create the same "HelloWorkflow" function workflow using pure C# code, beginning from a Console Application.

How to do it...

  1. Create a Console Application project:

    Create a new Console Application project under the Chapter01 solution. Name the project HelloCodeWorkflow. The following screenshot shows the Console Application new project dialog:

    How to do it...
  2. Add reference to the System.Activities assembly:

    By default, a new Console Application doesn't have reference to the System.Activities assembly, due to which we need to perform this step.

  3. Create workflow definition code:

    Open Program.cs file and change the code present as follows:

    using System.Activities;
    using System.Activities.Statements;
    
    namespace HelloCodeWorkflow {
        class Program {
            static void Main(string[] args) {
                WorkflowInvoker.Invoke(new HelloWorkflow());
            }
        }
    
        public class HelloWorkflow:Activity {
            public HelloWorkflow() {
                this.Implementation = () => new Sequence {
                    Activities = {
                        new WriteLine(){Text="Hello Workflow"}
                    }
                };
            }
        }
    }
    
  4. Run it:

    Set HelloCodeWorkflow as StartUp project and press Ctrl+F5 to run it. As expected, the result should be just like the previous result shown.

How it works...

We use the following namespaces:

using System.Activities;
using System.Activities.Statements;

Because WorflowInvoker class belongs to System.Activities namespace. Sequence activity, WriteLine activity belongs to System.Activities.Statements. namespace.

public class HelloWorkflow:Activity {
    public HelloWorkflow() {
        this.Implementation = () => new Sequence {
            Activities = {
                new WriteLine(){Text="Hellow Workflow"}
            }
        };
    }
}

By implementing a class inherited from Activity, we define a workflow using imperative code.

WorkflowInvoker.Invoke(s);

This code statement loads a workflow instance up and runs it automatically. The WorkflowInvoker.Invoke method is synchronous and invokes the workflow on the same thread as the caller.

There's more

WF4 also provides us a class DynamicActivity by which we can create a workflow instance dynamically in the runtime. In other words, by using DynamicActivity, there is no need to define a workflow class before initializing a workflow instance. Here is some sample code:

public static DynamicActivity GetWF() {
    return new DynamicActivity() {
        Implementation = () => new Sequence() {
            Activities ={
                new WriteLine(){Text="Hello Workflow"}
            }
        }
    };
}
主站蜘蛛池模板: 古蔺县| 罗城| 民乐县| 酒泉市| 腾冲县| 东辽县| 涟源市| 和顺县| 德保县| 南华县| 霍州市| 英吉沙县| 葫芦岛市| 华安县| 梓潼县| 米易县| 巴楚县| 四子王旗| 政和县| 襄城县| 四会市| 临潭县| 盐池县| 斗六市| 彩票| 宿松县| 乌兰县| 彭州市| 洪泽县| 盖州市| 北辰区| 灵川县| 通河县| 深州市| 合作市| 万山特区| 德令哈市| 镇远县| 德州市| 平安县| 婺源县|