• Tracking_自定义Profile筛选(1)


     1.Tacking服务所要记录的状态是可以通过自定义Tacking Pofile进行筛选的.

     2.默认Tacking服务对 [实例的各类状态][Activity的各类状态][用户跟踪行为]的所有状态进行记录,可以自定义自定义Tacking PofileTacking服务只记录实际需要的状态.以下各类状态变化可被Tacking服务记录,也可用Tacking Pofile进行筛选:

    实例的各类状态

    Aborted Changed Completed Created Exception Idle 
    Loaded
     Persisted Resumed Started Suspended Terminated Unloaded

    Activity的各类状态

    一个工作流是由多个Activity组成的,每一个Activity都会有一个生命周期,在此期间,Activity会经历多种状态:Canceling Closed Compensating Executing Faulting Initialized

    用户跟踪行为

    可以在Activity代码中用TrackData方法向Tacking服务提交自定义状态点

     3.自定义Tacking Pofile将生成一个XML,存入TrackingProfile表的TrackingProfileXml字段中

    4.默认的Tacking Pofile以一个XML串的形式存于DefaultTrackingProfile表的TrackingProfileXml字段中

    5.自定义Tacking Pofile只对指定的工作流有效,默认的Tacking Pofile对所有没有自定义Tacking Pofile的工作流有效。

    6.如果所有工作流要使用同样的筛选,可以直接修改默认的Tacking Pofile

    7.如果同一对象已添加自定义的Tacking Pofile,使用默认方式再添加时,将出产生异常,该异常由UpdateTrackingProfile存储过程产生.

    8.完全可以手工操作PofileXML串,也可以手工操作Tacking数据,而不使用本文的方式

     

    生成自定义Pofile对象

    该方法将生成一个自定义Pofile对象,并将该对象传行成一个XML串,然后调用后面的[插入ProfileXML串到数据库]方法将其存入数据库

     private static void 建立并插入Profile()
            
    {
                
    //生成Profile的XML字串,然后专给插入Profile方法

                Version 自定义版本 
    = new Version("4.3.2.1");
                
    //版本信息同时存在"TrackingProfile表Version字段"与"Profile的XML字串"中

                
    ///////////////////////////<TrackingProfile>////////////////////////////////////////////////////
                TrackingProfile profile = new TrackingProfile();
                

                
    //-----------<TrackingProfile> 节-------------
                profile.Version = 自定义版本;//此处用来写XML文件中的version="3.0.0.0"
                
    //效果如下
                
    //<TrackingProfile xmlns="http://schemas.microsoft.com/winfx/2006/workflow/trackingprofile" version="3.0.0.0">


                
    ///////////////////////////<ActivityTrackPoint>////////////////////////////////////////////////////

                
    //------------------------------------------------------------------//
                
    //       此段生成profile文件中,筛选Activity跟踪点的设置             //
                
    //------------------------------------------------------------------//

                
    //---------<ActivityTrackingLocation>节---------
                ActivityTrackingLocation ActivityTrackingLocation节 = new ActivityTrackingLocation(typeof(Activity));
               
                Console.WriteLine();
                Console.WriteLine(
    "已设置要监视的ActivityExecutionStatus :");
                
    foreach (ActivityExecutionStatus status in Enum.GetValues(typeof(ActivityExecutionStatus)))
                
    {
                    Console.WriteLine(status.ToString()); 
    //一个屏幕输出
                    ActivityTrackingLocation节.ExecutionStatusEvents.Add(status);
                }

               

                
    //----------<MatchingLocations>节---------------
                ActivityTrackingLocation节.MatchDerivedTypes = true;

                
    //----------<ActivityTrackPoint>节--------------
                ActivityTrackPoint ActivityTrackPoint节 = new ActivityTrackPoint();

                ActivityTrackPoint节.MatchingLocations.Add(ActivityTrackingLocation节); 
    //节入节

                profile.ActivityTrackPoints.Add(ActivityTrackPoint节); 
    //节入节

                
    ///////////////////<WorkflowTrackPoint>//////////////////////////////////////////////////////////

                
    //------------------------------------------------------------------//
                
    //       此段生成profile文件中,筛选实例跟踪点的设置                 //
                
    //------------------------------------------------------------------//


                
    //-----------<WorkflowTrackingLocation>节---------
                WorkflowTrackingLocation WorkflowTrackingLocation节 = new WorkflowTrackingLocation();

                Console.WriteLine();
                Console.WriteLine(
    "已设置要监视的WorkflowEvent :");
                
    foreach (TrackingWorkflowEvent wEvent in Enum.GetValues(typeof(TrackingWorkflowEvent)))
                
    {
                    Console.WriteLine( wEvent.ToString());
    //一个屏幕输出
                    WorkflowTrackingLocation节.Events.Add(wEvent);
                }

                Console.WriteLine();


                
    //-----------<WorkflowTrackPoint>节------------------
                WorkflowTrackPoint WorkflowTrackPoint节 = new WorkflowTrackPoint();

                
    //-----------<MatchingLocation>节------------------
                WorkflowTrackPoint节.MatchingLocation = WorkflowTrackingLocation节; //节入节
        
                profile.WorkflowTrackPoints.Add(WorkflowTrackPoint节); 
    //节入节

                
    /////////////////////////<UserTrackPoint>///////////////////////////////////////////////////////

                
    //------------------------------------------------------------------//
                
    //       此段生成profile文件中,筛选用户跟踪点的设置                 //
                
    //------------------------------------------------------------------//

                
    //------------<UserTrackPoint>节---------------
                UserTrackPoint UserTrackPoint节 = new UserTrackPoint();


                
    //-----------<UserTrackingLocation>节-----------
      
                UserTrackingLocation UserTrackingLocation节;
               
                Console.WriteLine();
                Console.WriteLine(
    "设置要监视的用户监视点:已设置");
                UserTrackingLocation节 
    = new UserTrackingLocation(typeof(string), typeof(CodeActivity));
               
                
    //-----------<MatchingLocation>节------------------
                UserTrackingLocation节.MatchDerivedActivityTypes = true;

                UserTrackPoint节.MatchingLocations.Add(UserTrackingLocation节);
               
                
    //节入节
                profile.UserTrackPoints.Add(UserTrackPoint节);

               
    ////////////////////////////////////////////////////////////////////////////////////////////
               //                                                                                        //
               ////////////////////////////////////////////////////////////////////////////////////////////

                
    //---------------生成XML串-----------------------------
                TrackingProfileSerializer 串行化对象 = new TrackingProfileSerializer();
                StringWriter StringWriter接收器 
    = new StringWriter(new StringBuilder(), CultureInfo.InvariantCulture);

                串行化对象.Serialize(StringWriter接收器, profile);

                String XML字串 
    = StringWriter接收器.ToString();
               
                Console.WriteLine();
                Console.WriteLine(
    "生成完成,准备插入数据库");
                Console.WriteLine();
                
    //---------------插入数据库------------------------
                插入Profile的XML串到数据库(XML字串, 自定义版本);

            }

    接下篇


     

  • 相关阅读:
    Linux文件编辑器 vi
    Sudo 和 Root 帐号
    Linux基本命令篇的习题解答
    Linux应用篇
    VMware中虚拟机网卡的四种模式
    Ubuntu游戏集合
    Linux与Window文件共享
    Linux知识点滴II
    [转载][翻译]jQuery Mobile教程创建一个订餐web应用(下)
    在WPF中创建带有刻度线的滑动条
  • 原文地址:https://www.cnblogs.com/foundation/p/514498.html
Copyright © 2020-2023  润新知