..
SYNCComponentDefine(???comp ???,
);
SYNCComponentDefine(???comp2???, );
... ...
SYNCCompDependenceDefine(???comp2???,???comp ???);
...
SYNCProcessUnitDefine(???comp ???,???pU0???,);
SYNCProcessUnitDefine(???comp ???,???pU ???,);
SYNCProcessUnitDefine(???comp ???,???pU2???,);
SYNCDependenceDefine(???pU0???,NULL,NULL,NULL);
SYNCDependenceDefine(???pU ???,???pU0???,SUCCESS,NULL);
SYNCDependenceDefine(???pU2???,???pU0???,FAILURE,NULL);
SYNCProcessUnitDefine(?«comp2?»,?»pUc2?»,);
SYNCDependenceDefine(?«pUc2?»,NULL,NULL,NULL);
... ...
SYNCControl();
The functions ???*Define??? describe the problem (storing the data in memory). The
function ???*Control??? loops on these data applying predefined semantic rules; in this
case it starts a processUnit when the event declared (termination of another processUnit
with a certain state) occurs. This approach, here seen for synchronization
module, is the same for acquire, transform and load hub, aggregation function, and
so forth. This declarative approach has been preferred to others, in that it allows
synthetic and clear application code and some standardization in developing several
infrastructural modules.
Structuring the code in components and processUnits is a way to implement a suf-
ficiently clear workflow. The ???master??? module provides the overall structure of
the whole application giving evidence to the logical tasks involved and how these
correlate to each other.
Pages:
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210