Merge branch 'master' of http://git.newlifex.com/NewLife/X
大石头 编写于 2018-09-25 18:53:17
X
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace XCode.Transform
{
    /// <summary>数据抽取模块,用于自定义抽取过程中各个环节</summary>
    public interface IETLModule
    {
        /// <summary>开始调度</summary>
        void Start();

        /// <summary>停止调度</summary>
        void Stop();

        /// <summary>首次初始化任务</summary>
        void Init();

        /// <summary>单批数据处理前</summary>
        /// <param name="ctx">数据上下文</param>
        /// <returns></returns>
        Boolean Processing(DataContext ctx);

        /// <summary>单批数据处理后</summary>
        /// <param name="ctx">数据上下文</param>
        void Processed(DataContext ctx);

        /// <summary>抽取完成</summary>
        /// <param name="ctx">数据上下文</param>
        void Fetched(DataContext ctx);

        /// <summary>实体列表完成后</summary>
        /// <param name="ctx">数据上下文</param>
        void OnFinished(DataContext ctx);

        /// <summary>出错</summary>
        /// <param name="ctx">数据上下文</param>
        void OnError(DataContext ctx);
    }

    //static class ETLModuleHelper
    //{
    //    public static void Start(this IEnumerable<IETLModule> list)
    //    {
    //        foreach (var item in list)
    //        {
    //            item.Start();
    //        }
    //    }

    //    public static void Stop(this IEnumerable<IETLModule> list)
    //    {
    //        foreach (var item in list)
    //        {
    //            item.Stop();
    //        }
    //    }

    //    public static void Init(this IEnumerable<IETLModule> list)
    //    {
    //        foreach (var item in list)
    //        {
    //            item.Init();
    //        }
    //    }

    //    public static Boolean Processing(this IEnumerable<IETLModule> list, DataContext ctx)
    //    {
    //        foreach (var item in list)
    //        {
    //            if (!item.Processing(ctx)) return false;
    //        }

    //        return true;
    //    }

    //    public static void Processed(this IEnumerable<IETLModule> list, DataContext ctx)
    //    {
    //        foreach (var item in list)
    //        {
    //            item.Processed(ctx);
    //        }
    //    }

    //    public static void Fetched(this IEnumerable<IETLModule> es, DataContext ctx)
    //    {
    //        foreach (var item in es)
    //        {
    //            item.Fetched(ctx);
    //        }
    //    }

    //    public static void OnFinished(this IEnumerable<IETLModule> es, DataContext ctx)
    //    {
    //        foreach (var item in es)
    //        {
    //            item.OnFinished(ctx);
    //        }
    //    }

    //    public static void OnError(this IEnumerable<IETLModule> es, DataContext ctx)
    //    {
    //        foreach (var item in es)
    //        {
    //            item.OnError(ctx);
    //        }
    //    }
    //}
}