提交 04337514 编写于 作者: zhouweidong's avatar zhouweidong

切面逻辑优化

上级 c8423bf6
......@@ -57,13 +57,22 @@ import java.util.regex.Pattern;
@Slf4j
public class DELogicAspect {
@Value("${r'${ibiz.filePath:D:/app/file/}'}")
private String fileRoot;
public enum LogicMode {
/**
* 本地
*/
LOCAL,
/**
* 远程
*/
REMOTE
}
private static BpmnXMLConverter bpmnXMLConverter = new BpmnXMLConverter();
private final ExpressionParser parser = new SpelExpressionParser();
private ConcurrentMap<String, DELogic> deLogicMap = new ConcurrentHashMap<>();
private final String DEFAULT_MODULE_PACKAGE = "[\\w+\\.]\\.core.(\\w+)\\.domain";
@Value("${r'${ibiz.dynamicMode:false}'}")
@Value("${r'${ibiz.dynamicMode:true}'}")
private boolean dynamicMode;
@Value("${r'${ibiz.dynamic.path:/app/file/dynamicmodel/}'}")
private String dynamicPath;
......@@ -108,13 +117,13 @@ public class DELogicAspect {
if (dynamicMode) {
bpmnFile = getRemoteModel(getDEModule(entity), entity.getClass().getSimpleName(), action, "before");
if (bpmnFile.exists()) {
executeLogic(bpmnFile, entity);
executeLogic(bpmnFile, entity, LogicMode.REMOTE);
return;
}
}
bpmnFile = getLocalModel(entity.getClass().getSimpleName(), action, "before");
if (bpmnFile != null && bpmnFile.exists()) {
executeLogic(bpmnFile, entity);
executeLogic(bpmnFile, entity, LogicMode.LOCAL);
}
}
......@@ -129,13 +138,13 @@ public class DELogicAspect {
if (dynamicMode) {
bpmnFile = getRemoteModel(getDEModule(entity), entity.getClass().getSimpleName(), action, "after");
if (bpmnFile.exists()) {
executeLogic(bpmnFile, entity);
executeLogic(bpmnFile, entity, LogicMode.REMOTE);
return;
}
}
bpmnFile = getLocalModel(entity.getClass().getSimpleName(), action, "after");
if (bpmnFile != null && bpmnFile.exists()) {
executeLogic(bpmnFile, entity);
executeLogic(bpmnFile, entity, LogicMode.LOCAL);
}
}
......@@ -150,13 +159,13 @@ public class DELogicAspect {
if (dynamicMode) {
bpmnFile = getRemoteModel(getDEModule(entity), entity.getClass().getSimpleName(), action, "exec");
if (bpmnFile.exists()) {
executeLogic(bpmnFile, entity);
executeLogic(bpmnFile, entity, LogicMode.REMOTE);
return;
}
}
bpmnFile = getLocalModel(entity.getClass().getSimpleName(), action, "exec");
if (bpmnFile != null && bpmnFile.exists()) {
executeLogic(bpmnFile, entity);
executeLogic(bpmnFile, entity, LogicMode.LOCAL);
}
}
......@@ -166,10 +175,10 @@ public class DELogicAspect {
* @param bpmnFile
* @param entity
*/
private void executeLogic(File bpmnFile, Object entity) {
private void executeLogic(File bpmnFile, Object entity, LogicMode logicMode) {
log.debug("开始执行实体处理逻辑[{}]", bpmnFile.getName());
String bpmnId = DigestUtils.md5DigestAsHex(bpmnFile.getName().getBytes());
DELogic logic = getDELogic(bpmnFile, entity);
DELogic logic = getDELogic(bpmnFile, entity, logicMode);
if (logic == null) {
return;
}
......@@ -255,7 +264,7 @@ public class DELogicAspect {
* @return
*/
@SneakyThrows
private DELogic getDELogic(File bpmnFile, Object entity) {
private DELogic getDELogic(File bpmnFile, Object entity, LogicMode logicMode) {
DELogic logic = null;
XMLStreamReader reader = null;
InputStream bpmn = null;
......@@ -283,8 +292,8 @@ public class DELogicAspect {
if (item instanceof CallActivity) {
CallActivity subBpmn = (CallActivity) item;
String bpmnFileName = subBpmn.getName();
File subBpmnFile = getSubBpmn(getDEModule(entity), entity.getClass().getSimpleName(), bpmnFileName);
DELogic refLogic = getDELogic(subBpmnFile, entity);
File subBpmnFile = getSubBpmn(getDEModule(entity), entity.getClass().getSimpleName(), bpmnFileName, logicMode);
DELogic refLogic = getDELogic(subBpmnFile, entity, logicMode);
if (refLogic != null) {
refLogics.add(refLogic);
if (!ObjectUtils.isEmpty(refLogic.getRefRuleFiles())) {
......@@ -360,7 +369,7 @@ public class DELogicAspect {
* @return
*/
private File getLocalModel(String entity, String action, String actionLogic) {
String logicName = String.format("PSDEACTION.json.%s.bpmn", actionLogic);
String logicName = String.format("%s.bpmn", actionLogic);
String filePath = File.separator + "rules" + File.separator + entity.toLowerCase() + File.separator + action + File.separator + logicName;
URL url = this.getClass().getResource(filePath.replace("\\", "/"));
return ObjectUtils.isEmpty(url) ? null : new File(url.getPath());
......@@ -388,8 +397,8 @@ public class DELogicAspect {
* @param logicName
* @return
*/
private File getSubBpmn(String module, String entity, String logicName) {
if (dynamicMode) {
private File getSubBpmn(String module, String entity, String logicName, LogicMode logicMode) {
if (LogicMode.REMOTE.equals(logicMode)) {
return new File(dynamicPath + File.separator + systemId + File.separator + "PSMODULES" + File.separator + module + File.separator + "PSDATAENTITIES" + File.separator + entity + File.separator + "PSDELOGICS" + File.separator + logicName + File.separator + "PSDELOGIC.json.bpmn");
} else {
String filePath = String.format("/rules/%s%sRuleFlow.bpmn", entity, logicName);
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册