IMerger
类图如下:
文档解析:
1.merger(self,subjobs,sum_outputdir,**option)
- 合并子作业的输出到sum_outputdir.
- options(关键字参数)由具体的子类定义
2.validatedMerge(self.job)
ISplitter
类图如下:
文档解析:
1.split(self,job)
- 根据主作业返回子作业列表
- 主作业不会被更改
- 具体子类必须实现本方法
- 修改子作业的确定部分(如特定的属性)。子作业的其他部分都会相同。只有在schema中声明为"splitable"的属性才可修改。如果app handler不能处理被修改的参数,这个限定应用在app对象上就可以避免前后不一致。
- 当前的实现中,backend的类型也不可更改。
2.validatedSplit(self,job)
- 调用split()方法执行作业拆分,并使mutability inveriants有效
- 如果invariants损坏(或者split()中发生异常),则抛出SplittingError异常
- 由框架直接调用且不应该在子类中更改
3._checksetNestedLists(self,value)
- 检查嵌套列表,规则是如果有嵌套列表,则它不能包含GangaObjects,因为这会与repository冲突。不符合规则会抛出异常。
4.createSubjob(self,job)
- 通过拷贝主作业来产生一个新的子作业,并正确设置其所有的域。
Comments !