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

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"}
            }
        }
    };
}
主站蜘蛛池模板: 峨边| 肥东县| 吉林市| 周宁县| 阳城县| 仙居县| 谢通门县| 文成县| 新巴尔虎右旗| 迁安市| 汝城县| 刚察县| 顺平县| 泌阳县| 汪清县| 托克托县| 临澧县| 富平县| 阿坝县| 南溪县| 应城市| 察雅县| 阳泉市| 陵水| 左贡县| 山东| 沙雅县| 高台县| 吉隆县| 醴陵市| 逊克县| 奎屯市| 修水县| 凤山县| 大洼县| 古蔺县| 西畴县| 天等县| 黄大仙区| 海城市| 雷州市|