com.kuangkie.carbon.fg.FunctionGroup Maven / Gradle / Ivy
The newest version!
package com.kuangkie.carbon.fg;
import com.kuangkie.carbon.fg.ops.FGRelationOps;
import com.kuangkie.carbon.fg.ops.FGOpsComplexus;
import com.kuangkie.carbon.fg.ops.FGRecordOps;
import com.kuangkie.carbon.fg.ops.RelationOps;
/**
*
* @version: V1.0
*
* @author: wangnq
*
* @className: FunctionGroup
*
* @packageName: cho.carbon.fuse.fg
*
* @description: 一个标识业务接口的接口
*
* @data: 2020年8月12日
*
*
*/
public interface FunctionGroup {
/**
*
* @methodsName: improveOnlyCorrelativeRelation
*
* @description: 业务处理过程中,可以给当前记录增加或删除关系,一条关系会涉及到两条记录,当对向模型记录在关系更新时需要走融合过程。
* 当当前记录模型有关系关联上述模型时,需要返回false。默认返回true。
* 建议通过更好的设计避免此方法返回false的情况。因为这不仅会影响效率也可能会引起混乱。
*
* @return
*
*/
public default boolean improveOnlyCorrelativeRelation() {
return true;
}
/**
*
* @methodsName: improveEveryTime
*
* @description: 返回true时,意味着模型的记录无论是否有属性或关系被提交,都会执行此记录的融合过程。返回false时,只有记录有属性更新或有效的关系操作时才会执行融合过程。
* 返回true时会执行更多的融合过程,会影响系统性能。
*
* @return
*
*/
public default boolean improveEveryTime() {
return false;
}
/**
*
* @methodsName: needImprove
*
* @description: 根据参数,帮助融合控制器判断是否需要执行融合过程。通常不需要重写这个方法。请慎重构思后在重写此方法。
* 此方法重写后可能会导致improveOnlyCorrelativeRelation和improveEveryTime方法失效。因为融合控制器不会直接调用上述两方法,而是在本方法中调用。
*
*
* @param recordCode
* @param opsComplexus
* @return
*
*/
public default boolean needImprove(String recordCode, FGOpsComplexus opsComplexus) {
boolean result = improveEveryTime();
if (result == true) {
return result;
}
if (opsComplexus == null) {
return false;
} else {
FGRecordOps rootRecordOps = opsComplexus.getRecordOps(recordCode);
if (rootRecordOps != null && rootRecordOps.isUseful()) {
return true;
}
FGRelationOps fgRelationOps = opsComplexus.getRecordRelationOps(recordCode);
if (fgRelationOps == null) {
return false;
} else {
RelationOps recordRelationOps = fgRelationOps.getBaseRelationOps();
if (recordRelationOps != null && recordRelationOps.isUsefulOps()) {
return true;
}
if (improveOnlyCorrelativeRelation()) {
recordRelationOps = fgRelationOps.getCorrelateRelationOps();
if (recordRelationOps != null && recordRelationOps.isUsefulOps()) {
return true;
}
}
}
return result;
}
}
}