⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wxdtrackingservice.cs

📁 博客园WxWinter写的WF工作流入门学习资料及示例代码
💻 CS
📖 第 1 页 / 共 2 页
字号:
        protected override TrackingProfile GetProfile(Type workflowType, Version profileVersionId)
        {
            //返回指定工作流模板的指定版本号的筛选规则
            //参数:profileVersionId,版本号
            //可用字典集实现
            return TrackingProfileManager.createAllProfile("1.2.3.4"); ;
        }

        protected override bool TryReloadProfile(Type workflowType, Guid workflowInstanceId, out TrackingProfile profile)
        {
            //重载指定工作流模板的筛选规则
            //参数:workflowType.,
            //参数:workflowInstanceId,
            //参数:out  profile,

            profile = TrackingProfileManager.createAllProfile("1.2.3.4"); ;
            return false;
        }

        protected override TrackingChannel GetTrackingChannel(TrackingParameters parameters)
        {
            //用TrackingParameters参数初始化信道
            return new wxdTrackingChannel(parameters,writer );
        }





    }


    public  interface IWriter
    {
        void outMessage(string source, string value);
        void outMessage(string source, System.Collections.ArrayList value);
    }

    public class textFileWriter : IWriter
    {
        int lineNo = 0;
       
        System.IO.FileStream fs;
        System.IO.StreamWriter wr;

        public textFileWriter(string path)
        {
            fs = new FileStream(path, FileMode.Append, FileAccess.Write , FileShare.ReadWrite);
            wr = new StreamWriter(fs, System.Text.Encoding.UTF8);
        }


        public  void outMessage(string source, string value)
        {

            write("跟踪", source, value);
        }

        public  void outMessage(string source, System.Collections.ArrayList value)
        {

            write("跟踪", source, value);
        }

        public void write(string title, string source, string value)
        {
            this.title(title);
            this.body(source);
            this.body(value);
            this.end();
        }


        public  void write(string title, string source, System.Collections.ArrayList value)
        {

            this.title(title);
            body(source);

            if (value != null)
            {

                foreach (object temp in value)
                {
                    body(temp.ToString());
                }
            }
            else
            {
                body("内容为空");
            }

            end();
        }


        public void title(string v)
        {
            lineNo++;
            wr.WriteLine(lineNo.ToString());
            wr.WriteLine( "┌───────────────────────────────────────────────────────────────┐");
            wr.WriteLine( "│【" + v + "】" + DateTime.Now.ToString());
            wr.Flush();
        }

        public void end()
        {
            wr.WriteLine("└───────────────────────────────────────────────────────────────┘");
            wr.Flush();
        }

        public void body(string v)
        {
            wr.WriteLine("│"+ v);
            wr.Flush();
        }

 



    }


    public class wxdTrackingManager : ITrackingManager
    {
        WorkflowRuntime engine;
        public wxdTrackingManager(WorkflowRuntime engine)
        {
            this.engine = engine;
        }
        /// <summary>
        /// 得到引擎中的wxdTrackingService服务
        /// </summary>
        /// <param name="engine"></param>
        /// <returns></returns>
        public  wxdTrackingService GetTrackingService()
        {
            if (engine == null)
            { throw new System.Exception("引擎没有实例化"); }

            wxdTrackingService track = engine.GetService<wxdTrackingService>();
 
            return track;
        }

        /// <summary>
        /// 引擎中是否存在wxdTrackingService跟踪服务
        /// </summary>
        public bool IsTrackingServiceInEngine()
        {


            wxdTrackingService track = GetTrackingService();

            if (track == null)
            { return false; }
            else
            { return true; }
        }

        /// <summary>
        /// 添加wxdTrackingService跟踪服务到引擎
        /// </summary>
        public string AddTrackingServiceToEngine(string filepath)
        {
            wxdTrackingService track;

            track = new wxdTrackingService(new textFileWriter(filepath)); ;
            return AddTrackingServiceToEngine(track);

        }


        /// <summary>
        /// 添加wxdTrackingService跟踪服务到引擎
        /// </summary>
        public  string AddTrackingServiceToEngine(wxdTrackingService track)
        {
            if (engine == null)
            { throw new System.Exception("引擎没有实例化"); }
            if (engine.IsStarted)
            {
                return "引擎正在运生,无法向引擎添加wxdTrackingService服务";
            }

            if (track == null)
            {
                throw new System.Exception("wxdTrackingService跟踪服务没有实例化");
            }


            if (IsTrackingServiceInEngine())
            {
                return "引擎中已经存在wxdTrackingService跟踪服务";
            }
            else
            {
                engine.AddService(track);
                return "wxdTrackingService跟踪服务已添加到引擎中";
            }

        }


        /// <summary>
        /// 从引擎中移除跟踪服务
        /// </summary>
        public  string RemoveTrackingServiceFromEngine()
        {
            if (engine == null)
            { throw new System.Exception("引擎没有实例化"); }

            if (engine.IsStarted)
            {
                return "引擎正在运行,无法移除wxdTrackingService服务";
            }

            wxdTrackingService track = GetTrackingService();

            if (track == null)
            {
                return "引擎中不存在wxdTrackingService跟踪服务";
            }
            else
            {
                engine.RemoveService(track);
                return "wxdTrackingService跟踪服务已移出";
        
            }
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -