Introduction : The Extensible
Application Markup Language (XAML) is a
new declarative language is used in Windows Framework and Windows
Presentation Foundation.
XAML is used for initializing structured values
and objects. The XAML define UI element, Data Binding, Event. The use of workflow markup with code-beside logic files is similar to how ASP.NET separates presentation files from logic files.
Step 1 : Open Visual Studio.
- Select File->New-> Project.
- Select Sequential Workflow Console
Application.
Step 2 : Go to Solution Explorer
and right-click.
- Select Workflow1.cs file.
- Delete Workflow1.cs file form project for
display the XAML.
Step 3 : Go to Solution Explorer and
right-click.
- Add-> New Item->Workflow.
- Select Sequential Workflow Code
Separation.
Step 4 : Go to Solution Explorer and see
Workflow.xoml file create.
- Click Workflow.xoml file and open with.
- XML editor option open.
- The look like following code.
Code :
<SequentialWorkflowActivity
x:Class="myxmsapplication.Workflow2"
x:Name="Workflow2"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/workflow">
</SequentialWorkflowActivity>
Step 5 : Go to Toolbox
option.
- Drag While activity from Toolbox.
- Go to Workflow.xoml option following code
will be add.
Code :
<SequentialWorkflowActivity
x:Class="myxmsapplication.Workflow2"
x:Name="Workflow2"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/workflow">
<WhileActivity
x:Name="whileActivity1">
<WhileActivity.Condition>
<RuleConditionReference
ConditionName="Condition1"
/>
</WhileActivity.Condition>
</WhileActivity>
</SequentialWorkflowActivity>
Step 6 : Go to
Workflow.xoml.cs file and add following code.
Code :
public
partial class
Workflow2 :
SequentialWorkflowActivity
{
public Int32
counter;
}
Step 7 : Go to Workflow.xoml
design option.
- Right-click-> Properties option.
- Define Condition, Condition Name.
Condition :
this.counter != 10
Step 8 : Go to Design
option and drag activty from Toolbox.
- Drag If-Else, Code activity.
- Define the condition.
Condition :
this.counter % 2 == 0
this.counter % 2 != 0
Step 9 : Now we double-click in
CodeActivty1, CodeActivity2.
Code :
private
void codeActivity1_ExecuteCode(object
sender, EventArgs e)
{
Console.WriteLine("Hello!
" + Convert.ToString(counter) +"
is an even number!");
counter++;
}
private void
codeActivity2_ExecuteCode(object sender,
EventArgs e)
{
Console.WriteLine("Hello!
" + Convert.ToString(counter) +"
is an odd number!");
counter++;
}
Step 10 : We open
Workflow.xoml option add following code.
Code :
<SequentialWorkflowActivity
x:Class="myxmsapplication.Workflow2"
x:Name="Workflow2"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/workflow">|
<WhileActivity
x:Name="whileActivity1">
<WhileActivity.Condition>
<RuleConditionReference
ConditionName="Condition1"
/>
</WhileActivity.Condition>
<IfElseActivity
x:Name="ifElseActivity1">
<IfElseBranchActivity
x:Name="ifElseBranchActivity1">
<IfElseBranchActivity.Condition>
<RuleConditionReference
ConditionName="Condition2"
/>
</IfElseBranchActivity.Condition>
<CodeActivity
x:Name="codeActivity1"
ExecuteCode="codeActivity1_ExecuteCode"
/>
</IfElseBranchActivity>
<IfElseBranchActivity
x:Name="ifElseBranchActivity2">
<IfElseBranchActivity.Condition>
<RuleConditionReference
ConditionName="Condition3"
/>
</IfElseBranchActivity.Condition>
<CodeActivity
x:Name="codeActivity2"
ExecuteCode="codeActivity2_ExecuteCode"
/>
</IfElseBranchActivity>
</IfElseActivity>
</WhileActivity>
</SequentialWorkflowActivity>
Step 11 : Now we
Program.cs file add following code.
Code :
|
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
System.Threading;
using
System.Workflow.Runtime;
using
System.Workflow.Runtime.Hosting;
using
System.Workflow.Activities;
namespace
myxmsapplication
{
class Program
{
static void
Main(string[] args)
{
using (WorkflowRuntime
workflowRuntime = new
WorkflowRuntime())
{
AutoResetEvent waitHandle =
new AutoResetEvent(false);
workflowRuntime.WorkflowCompleted +=
delegate(object sender,
WorkflowCompletedEventArgs e) {
waitHandle.Set(); };
workflowRuntime.WorkflowTerminated +=
delegate(object sender,
WorkflowTerminatedEventArgs e)
{
Console.WriteLine(e.Exception.Message);
waitHandle.Set();
};
WorkflowInstance instance =
workflowRuntime.CreateWorkflow(typeof(myxmsapplication.Workflow1));
instance.Start();
waitHandle.WaitOne();
Console.ReadKey();
}
}
}
}
Step 12 : Press F5 and run
the application.