Skip to content

Commit 8f0b230

Browse files
committed
优化ETL过滤模块
1 parent 6f7a137 commit 8f0b230

File tree

3 files changed

+55
-13
lines changed

3 files changed

+55
-13
lines changed

NewLife.Cube/Areas/Admin/Controllers/FileController.cs

+8-6
Original file line numberDiff line numberDiff line change
@@ -57,12 +57,14 @@ private FileItem GetItme(String r)
5757
var inf = GetFile(r) as FileSystemInfo ?? GetDirectory(r);
5858
if (inf == null) return null;
5959

60-
var fi = new FileItem();
61-
fi.Name = inf.Name;
62-
fi.FullName = GetFullName(inf.FullName);
63-
fi.Raw = inf.FullName;
64-
fi.Directory = inf is DirectoryInfo;
65-
fi.LastWrite = inf.LastWriteTime;
60+
var fi = new FileItem
61+
{
62+
Name = inf.Name,
63+
FullName = GetFullName(inf.FullName),
64+
Raw = inf.FullName,
65+
Directory = inf is DirectoryInfo,
66+
LastWrite = inf.LastWriteTime
67+
};
6668

6769
if (inf is FileInfo)
6870
{

XCode/Transform/ETL.cs

+7-4
Original file line numberDiff line numberDiff line change
@@ -81,21 +81,23 @@ public ETL(IEntityOperate source) : this()
8181
/// <summary>开始</summary>
8282
public virtual void Start()
8383
{
84+
Modules.Start();
85+
8486
var ext = Extracter;
8587
if (ext == null) throw new ArgumentNullException(nameof(Extracter), "没有设置数据抽取器");
8688

8789
//if (ext.Setting == null) ext.Setting = new ExtractSetting();
8890
ext.Init();
8991

9092
if (Stat == null) Stat = new ETLStat();
91-
92-
Modules.Init(this);
9393
}
9494

9595
/// <summary>停止</summary>
9696
public virtual void Stop()
9797
{
9898
_Inited = false;
99+
100+
Modules.Stop();
99101
}
100102
#endregion
101103

@@ -108,17 +110,18 @@ protected virtual Boolean Init(IExtractSetting set)
108110
{
109111
WriteLog("开始处理{0},区间({1} + {3:n0}, {2})", Name, set.Start, set.End, set.Row);
110112

113+
Modules.Init();
114+
111115
return true;
112116
}
113117

114118
/// <summary>抽取并处理一批数据</summary>
115119
/// <returns>返回抽取数据行数,没有数据返回0,初始化或配置失败返回-1</returns>
116120
public virtual Int32 Process()
117121
{
118-
if (!Modules.Processing()) return -1;
122+
if (!Modules.Processing()) { _Inited = false; return -1; }
119123

120124
var set = Extracter.Setting;
121-
if (set == null) { _Inited = false; return -1; }
122125

123126
if (!_Inited)
124127
{

XCode/Transform/IETLModule.cs

+40-3
Original file line numberDiff line numberDiff line change
@@ -9,23 +9,60 @@ namespace XCode.Transform
99
/// <summary>数据抽取模块,用于自定义抽取过程中各个环节</summary>
1010
public interface IETLModule
1111
{
12-
void Init(ETL etl);
12+
/// <summary>开始调度</summary>
13+
void Start();
1314

15+
/// <summary>停止调度</summary>
16+
void Stop();
17+
18+
/// <summary>首次初始化任务</summary>
19+
void Init();
20+
21+
/// <summary>单批数据处理前</summary>
22+
/// <returns></returns>
1423
Boolean Processing();
24+
25+
/// <summary>单批数据处理后</summary>
1526
void Processed();
1627

28+
/// <summary>实体列表完成后</summary>
29+
/// <param name="list"></param>
30+
/// <param name="set"></param>
31+
/// <param name="success"></param>
32+
/// <param name="fetchCost"></param>
33+
/// <param name="processCost"></param>
1734
void OnFinished(IList<IEntity> list, IExtractSetting set, Int32 success, Double fetchCost, Double processCost);
1835

36+
/// <summary>出错</summary>
37+
/// <param name="source"></param>
38+
/// <param name="set"></param>
39+
/// <param name="ex"></param>
1940
void OnError(Object source, IExtractSetting set, Exception ex);
2041
}
2142

2243
static class ETLModuleHelper
2344
{
24-
public static void Init(this IEnumerable<IETLModule> list, ETL etl)
45+
public static void Start(this IEnumerable<IETLModule> list)
46+
{
47+
foreach (var item in list)
48+
{
49+
item.Start();
50+
}
51+
}
52+
53+
public static void Stop(this IEnumerable<IETLModule> list)
54+
{
55+
foreach (var item in list)
56+
{
57+
item.Stop();
58+
}
59+
}
60+
61+
public static void Init(this IEnumerable<IETLModule> list)
2562
{
2663
foreach (var item in list)
2764
{
28-
item.Init(etl);
65+
item.Init();
2966
}
3067
}
3168

0 commit comments

Comments
 (0)