zoukankan      html  css  js  c++  java
  • WF4.0 Beta1 自定义跟踪

    WF4.0 Beta1 自定义跟踪

    public class myTracking : TrackingParticipant

    {

    public override void Track(TrackingRecord record, TimeSpan timeout)

    {

    Console.WriteLine("*");

    Console.WriteLine("RecordNumber:[{2}], Track:[{0}],Level:[{1}]", record.GetType().FullName, record.Level, record.RecordNumber);

    Console.WriteLine("------------------------ content ----------------------------");

    //-------------------WorkflowInstanceRecord---------------------------

    WorkflowInstanceRecord workflowInstanceRecord = record as WorkflowInstanceRecord;

    if (workflowInstanceRecord != null)

    {

    Console.WriteLine("[workflowInstanceRecord]");

    Console.WriteLine("InstanceID: {0} , instance state: {1}", record.InstanceId, workflowInstanceRecord.State);

    }

    //-------------ActivityTrackingRecord-----------------------

    ActivityTrackingRecord activityTrackingRecord = record as ActivityTrackingRecord;

    if (activityTrackingRecord != null)

    {

    Console.WriteLine("[ActivityTrackingRecord]");

    Console.WriteLine("ActivityDisplayName: {0} :ActivityInstanceState: {1} ", activityTrackingRecord.Name, activityTrackingRecord.State);

    IDictionary<String, object> variables = activityTrackingRecord.Variables;

    if (variables.Count > 0)

    {

    Console.WriteLine("Variables:");

    foreach (KeyValuePair<string, object> variable in variables)

    {

    Console.WriteLine("key: {0} , Value: {1}", variable.Key, variable.Value);

    }

    }

    }

    //----------------UserTrackingRecord----------------------

    UserTrackingRecord userTrackingRecord = record as UserTrackingRecord;

    if ((userTrackingRecord != null) && (userTrackingRecord.Data.Count > 0))

    {

    Console.WriteLine("[UserTrackingRecord]");

    foreach (string data in userTrackingRecord.Data.Keys)

    {

    Console.WriteLine( "{0} : {1}", data, userTrackingRecord.Data[data]);

    }

    }

    //---------------End----------------------

    Console.WriteLine("======================== end ===============================");

    Console.WriteLine("");

    }

    }

    一个具备UserTrackingRecord的Activity

    public class myActivity : CodeActivity

    {

    protected override void Execute(CodeActivityContext context)

    {

    Console.WriteLine("myActivity Execute");

    UserTrackingRecord userRecord = new UserTrackingRecord("myUserTrackingRecord");

    userRecord.Data.Add("wxd", 12345);

    userRecord.Data.Add("wxwinter", "lzm");

    context.Track(userRecord);

    }

    }

    一个用于测试的流程

    使用

    class Program

    {

    static void Main(string[] args)

    {

    System.Console.WindowWidth = 120;

    myTracking tracking = new myTracking();

    tracking.TrackingProfile = getTrackingProfile();

    WorkflowInstance myInstance = new WorkflowInstance(new myTestWorkflow());

    myInstance.Extensions.Add(tracking);

    myInstance.Run();

    System.Console.Read();

    }

    static TrackingProfile getTrackingProfile()

    {

    TrackingProfile myTrackingProfile = new TrackingProfile();

    myTrackingProfile.Name = "wxwinterTrackingProfile";

    //

    UserTrackingQuery myUserTrackingQuery = new UserTrackingQuery();

    myUserTrackingQuery.Name = "*";

    myUserTrackingQuery.ActivityName = "*";

    //

    WorkflowInstanceQuery myWorkflowInstanceQuery = new WorkflowInstanceQuery();

    myWorkflowInstanceQuery.States.Add(WorkflowInstanceRecord.AbortedEvent);

    myWorkflowInstanceQuery.States.Add(WorkflowInstanceRecord.CompletedEvent);

    myWorkflowInstanceQuery.States.Add(WorkflowInstanceRecord.DeletedEvent);

    myWorkflowInstanceQuery.States.Add(WorkflowInstanceRecord.IdleEvent);

    myWorkflowInstanceQuery.States.Add(WorkflowInstanceRecord.PersistedEvent);

    myWorkflowInstanceQuery.States.Add(WorkflowInstanceRecord.ResumedEvent);

    myWorkflowInstanceQuery.States.Add(WorkflowInstanceRecord.StartedEvent);

    myWorkflowInstanceQuery.States.Add(WorkflowInstanceRecord.UnhandledExceptionEvent);

    myWorkflowInstanceQuery.States.Add(WorkflowInstanceRecord.UnloadedEvent);

    //

    ActivityQuery myActivityQuery = new ActivityQuery();

    myActivityQuery.ActivityName = "*";

    myActivityQuery.States.Add("*");

    myActivityQuery.EnvironmentQueries.Add("*");

    myActivityQuery.VariableQueries.Add(new VariableQuery{VariableName ="*"});

    //

    myTrackingProfile.Queries.Add(myActivityQuery);

    myTrackingProfile.Queries.Add(myUserTrackingQuery);

    myTrackingProfile.Queries.Add(myWorkflowInstanceQuery);

    //

    return myTrackingProfile;

    }

    }

  • 相关阅读:
    修改目录所在的组、用户 分类: ubuntu 2013-08-27 15:55 215人阅读 评论(0) 收藏
    python之string模块 分类: python基础学习 python Module 2013-08-27 13:58 241人阅读 评论(0) 收藏
    python参数 分类: python基础学习 python 2013-08-23 15:06 217人阅读 评论(0) 收藏
    依次读取文件中的一个字符 分类: python基础学习 python 小练习 2013-08-22 11:14 289人阅读 评论(0) 收藏
    去除共同元素 分类: python基础学习 2013-08-19 21:38 216人阅读 评论(0) 收藏
    (学习)python非贪婪、多行匹配正则表达式例子 分类: 正则表达式 2013-08-19 11:21 2540人阅读 评论(2) 收藏
    KVM整理
    [BFS] [洛谷] P1443 吗的便利
    [DP] [01] [洛谷] P1510 味精填海
    [暴力] [HPU] 最大数
  • 原文地址:https://www.cnblogs.com/foundation/p/1536337.html
Copyright © 2011-2022 走看看