diff --git a/biz/pom.xml b/biz/pom.xml
index 7001a9bcdcb685efe9700faa0ba1779459bbfcd0..4c0f6040dad7034d75ef59c596b4c0d9e526fbd0 100644
--- a/biz/pom.xml
+++ b/biz/pom.xml
@@ -22,6 +22,11 @@
bic-dal
${parent.version}
+
+ cn.icanci.loopstack.bic
+ bic-graph
+ ${parent.version}
+
org.mapstruct
mapstruct
diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/adapter/package-info.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/adapter/package-info.java
new file mode 100644
index 0000000000000000000000000000000000000000..0531355c690d114c23994e945ee9af2b9d949c49
--- /dev/null
+++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/adapter/package-info.java
@@ -0,0 +1,8 @@
+/**
+ * 适配器层
+ * 将模型转换为标准组件信息
+ *
+ * @author icanci
+ * @since 1.0 Created in 2023/09/21 13:19
+ */
+package cn.icanci.loopstack.bic.biz.adapter;
\ No newline at end of file
diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/cache/GraphKey.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/cache/GraphKey.java
new file mode 100644
index 0000000000000000000000000000000000000000..7294e4f46e557b43ad3938609e6c4ba6d26d496d
--- /dev/null
+++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/cache/GraphKey.java
@@ -0,0 +1,34 @@
+package cn.icanci.loopstack.bic.biz.cache;
+
+import lombok.Data;
+
+import java.util.Objects;
+
+/**
+ * 本地缓存唯一Key
+ *
+ * @author icanci
+ * @since 1.0 Created in 2023/09/21 10:48
+ */
+@Data
+public class GraphKey {
+ /** 系统uuid */
+ private String systemUuid;
+ /** 用例uuid */
+ private String useCaseUuid;
+
+ @Override
+ public boolean equals(Object object) {
+ if (this == object)
+ return true;
+ if (object == null || getClass() != object.getClass())
+ return false;
+ GraphKey graphKey = (GraphKey) object;
+ return Objects.equals(systemUuid, graphKey.systemUuid) && Objects.equals(useCaseUuid, graphKey.useCaseUuid);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(systemUuid, useCaseUuid);
+ }
+}
diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/impl/EdgeStyleDtsServiceImpl.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/impl/EdgeStyleDtsServiceImpl.java
index a050dba473160f65477dfb98cbb2c7de18b397b1..5f0eece412c889882747c631aba09ab60c7b0677 100644
--- a/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/impl/EdgeStyleDtsServiceImpl.java
+++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/impl/EdgeStyleDtsServiceImpl.java
@@ -1,9 +1,12 @@
package cn.icanci.loopstack.bic.biz.dts.impl;
+import javax.annotation.Resource;
+
import org.springframework.stereotype.Service;
import cn.icanci.loopstack.bic.biz.dts.DTS;
import cn.icanci.loopstack.bic.biz.dts.GraphDtsService;
+import cn.icanci.loopstack.bic.biz.service.SnapshotService;
import cn.icanci.loopstack.bic.common.model.base.EdgeStyleVO;
/**
@@ -14,8 +17,18 @@ import cn.icanci.loopstack.bic.common.model.base.EdgeStyleVO;
@Service
@DTS(EdgeStyleVO.class)
public class EdgeStyleDtsServiceImpl implements GraphDtsService {
+ @Resource
+ private SnapshotService snapshotService;
+
@Override
- public void dtsUnitViewTree(EdgeStyleVO type) {
- // TODO 自动刷新纠察图结构缓存
+ public void dtsUnitViewTree(EdgeStyleVO edgeStyle) {
+ // Tips: 创建线程池进行并行更新
+ // 1 获取边被使用的系统和用例
+ // 1.1 如果没有,结束
+ // 1.2 如果有,获取所有使用此边的纠察图
+ // 2 遍历进行更新
+ // TODO 自动刷新快照和版本,
+ // 自动刷新纠察图结构缓存
+ // snapshotService.refresh(edgeStyle.getSystemUuid(),);
}
}
diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/impl/NodeStyleDtsServiceImpl.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/impl/NodeStyleDtsServiceImpl.java
index 9ab6b4e1faae5273edbbf7edd96b0a4efa0f9637..1a8508af99247cd05674f434062abb786fa0ad8f 100644
--- a/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/impl/NodeStyleDtsServiceImpl.java
+++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/impl/NodeStyleDtsServiceImpl.java
@@ -1,9 +1,12 @@
package cn.icanci.loopstack.bic.biz.dts.impl;
+import javax.annotation.Resource;
+
import org.springframework.stereotype.Service;
import cn.icanci.loopstack.bic.biz.dts.DTS;
import cn.icanci.loopstack.bic.biz.dts.GraphDtsService;
+import cn.icanci.loopstack.bic.biz.service.SnapshotService;
import cn.icanci.loopstack.bic.common.model.base.NodeStyleVO;
/**
@@ -14,8 +17,16 @@ import cn.icanci.loopstack.bic.common.model.base.NodeStyleVO;
@Service
@DTS(NodeStyleVO.class)
public class NodeStyleDtsServiceImpl implements GraphDtsService {
+ @Resource
+ private SnapshotService snapshotService;
+
@Override
public void dtsUnitViewTree(NodeStyleVO type) {
- // TODO 节点样式变更之后:自动刷新纠察图结构缓存
+ // 1 获取节点被使用的系统和用例
+ // 1.1 如果没有,结束
+ // 1.2 如果有,获取所有使用此节点的纠察图
+ // 2 遍历进行更新
+ // TODO 自动刷新快照和版本,
+ // 节点样式变更之后:自动刷新纠察图结构缓存
}
}
diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/impl/NodeVueDtsServiceImpl.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/impl/NodeVueDtsServiceImpl.java
index 9daea63338229f64dbe39c5d6be62b8607fe3e99..b658c5ceb44c4fbefabb932ab31e3dee9b94e22e 100644
--- a/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/impl/NodeVueDtsServiceImpl.java
+++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/impl/NodeVueDtsServiceImpl.java
@@ -1,9 +1,12 @@
package cn.icanci.loopstack.bic.biz.dts.impl;
+import javax.annotation.Resource;
+
import org.springframework.stereotype.Service;
import cn.icanci.loopstack.bic.biz.dts.DTS;
import cn.icanci.loopstack.bic.biz.dts.GraphDtsService;
+import cn.icanci.loopstack.bic.biz.service.SnapshotService;
import cn.icanci.loopstack.bic.common.model.base.NodeVueVO;
/**
@@ -14,8 +17,16 @@ import cn.icanci.loopstack.bic.common.model.base.NodeVueVO;
@Service
@DTS(NodeVueVO.class)
public class NodeVueDtsServiceImpl implements GraphDtsService {
+ @Resource
+ private SnapshotService snapshotService;
+
@Override
public void dtsUnitViewTree(NodeVueVO type) {
- // TODO 节点组件变更之后:自动刷新纠察图结构缓存
+ // 1 获取节点被使用的系统和用例
+ // 1.1 如果没有,结束
+ // 1.2 如果有,获取所有使用此节点的纠察图
+ // 2 遍历进行更新
+ // TODO 自动刷新快照和版本
+ // 节点组件变更之后:自动刷新纠察图结构缓存
}
}
diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/impl/UnitViewTreeGraphDtsServiceImpl.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/impl/UnitViewTreeGraphDtsServiceImpl.java
index 4da1759b623177f78ee84c7db440a0188c24291b..d2ffe659c9fc236ff19dc2183ef7beb73c114f5a 100644
--- a/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/impl/UnitViewTreeGraphDtsServiceImpl.java
+++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/impl/UnitViewTreeGraphDtsServiceImpl.java
@@ -14,6 +14,7 @@ import com.google.common.collect.Sets;
import cn.hutool.core.lang.Pair;
import cn.icanci.loopstack.bic.biz.dts.DTS;
import cn.icanci.loopstack.bic.biz.dts.GraphDtsService;
+import cn.icanci.loopstack.bic.biz.service.SnapshotService;
import cn.icanci.loopstack.bic.biz.service.UnitViewService;
import cn.icanci.loopstack.bic.common.enums.NodeTypeEnum;
import cn.icanci.loopstack.bic.common.model.graph.*;
@@ -27,6 +28,8 @@ import cn.icanci.loopstack.bic.common.model.graph.*;
public class UnitViewTreeGraphDtsServiceImpl implements GraphDtsService {
@Resource
private UnitViewService unitViewService;
+ @Resource
+ private SnapshotService snapshotService;
@Override
public void dtsUnitViewTree(UnitViewTreeVO unitViewTree) {
@@ -45,7 +48,7 @@ public class UnitViewTreeGraphDtsServiceImpl implements GraphDtsService {
+}
diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/SnapshotService.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/SnapshotService.java
new file mode 100644
index 0000000000000000000000000000000000000000..19a071902c513e96c451195c383595f581f70961
--- /dev/null
+++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/SnapshotService.java
@@ -0,0 +1,15 @@
+package cn.icanci.loopstack.bic.biz.service;
+
+/**
+ * @author icanci
+ * @since 1.0 Created in 2023/09/21 00:08
+ */
+public interface SnapshotService {
+ /**
+ * 刷新快照
+ *
+ * @param systemUuid systemUuid
+ * @param useCaseUuid useCaseUuid
+ */
+ void refresh(String systemUuid, String useCaseUuid);
+}
diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/UnitViewSnapshotIndexService.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/UnitViewSnapshotIndexService.java
new file mode 100644
index 0000000000000000000000000000000000000000..ba980683ad3fce61063166635819b852ca06c793
--- /dev/null
+++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/UnitViewSnapshotIndexService.java
@@ -0,0 +1,27 @@
+package cn.icanci.loopstack.bic.biz.service;
+
+import java.util.List;
+
+import cn.icanci.loopstack.bic.common.model.snapshot.UnitViewSnapshotIndexVO;
+import cn.icanci.loopstack.bic.dal.mongo.common.PageList;
+
+/**
+ * @author icanci
+ * @since 1.0 Created in 2023/09/20 21:45
+ */
+public interface UnitViewSnapshotIndexService extends BaseService {
+ @Override
+ List queryAll();
+
+ @Override
+ void save(UnitViewSnapshotIndexVO unitViewSnapshotIndexVO);
+
+ @Override
+ UnitViewSnapshotIndexVO queryById(String id);
+
+ @Override
+ PageList queryPage(UnitViewSnapshotIndexVO unitViewSnapshotIndexVO, int pageNum, int pageSize);
+
+ UnitViewSnapshotIndexVO queryBySystemUuidAndUseCaseUuid(String systemUuid, String useCaseUuid);
+
+}
diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/SnapshotServiceImpl.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/SnapshotServiceImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..f9c937767ebfe602a8bc37019a36c70d8ddf72c0
--- /dev/null
+++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/SnapshotServiceImpl.java
@@ -0,0 +1,55 @@
+package cn.icanci.loopstack.bic.biz.service.impl;
+
+import javax.annotation.Resource;
+
+import org.springframework.stereotype.Service;
+
+import cn.icanci.loopstack.bic.biz.service.SnapshotService;
+import cn.icanci.loopstack.bic.biz.service.UnitViewSnapshotIndexService;
+import cn.icanci.loopstack.bic.biz.service.UnitViewSnapshotService;
+import cn.icanci.loopstack.bic.common.model.snapshot.UnitViewSnapshotIndexVO;
+
+/**
+ * 快照服务
+ *
+ * @author icanci
+ * @since 1.0 Created in 2023/09/21 00:09
+ */
+@Service
+public class SnapshotServiceImpl implements SnapshotService {
+ @Resource
+ private UnitViewSnapshotService unitViewSnapshotService;
+ @Resource
+ private UnitViewSnapshotIndexService unitViewSnapshotIndexService;
+
+ // TODO 数据一致性问题
+ @Override
+ public void refresh(String systemUuid, String useCaseUuid) {
+ long version = refreshSnapshotIndex(systemUuid, useCaseUuid);
+ // TODO 构建数据模型
+ // TODO 更新内存构建缓存
+ }
+
+ /**
+ * 刷新快照索引并返回版本
+ *
+ * @param systemUuid systemUuid
+ * @param useCaseUuid useCaseUuid
+ * @return 版本
+ */
+ private long refreshSnapshotIndex(String systemUuid, String useCaseUuid) {
+ UnitViewSnapshotIndexVO index = unitViewSnapshotIndexService.queryBySystemUuidAndUseCaseUuid(systemUuid, useCaseUuid);
+ long version = System.currentTimeMillis();
+ if (index == null) {
+ index = new UnitViewSnapshotIndexVO();
+ index.setSystemUuid(systemUuid);
+ index.setUseCaseUuid(useCaseUuid);
+ index.setVersion(version);
+ } else {
+ index.setVersion(version);
+ }
+ unitViewSnapshotIndexService.save(index);
+ return version;
+ }
+
+}
diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/UnitViewSnapshotIndexServiceImpl.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/UnitViewSnapshotIndexServiceImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..e0796da61d5973b645e61f29505a1ae3fcb7b22a
--- /dev/null
+++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/UnitViewSnapshotIndexServiceImpl.java
@@ -0,0 +1,60 @@
+package cn.icanci.loopstack.bic.biz.service.impl;
+
+import java.util.List;
+
+import javax.annotation.Resource;
+
+import org.springframework.stereotype.Service;
+
+import cn.icanci.loopstack.bic.biz.mapper.UnitViewSnapshotIndexMapper;
+import cn.icanci.loopstack.bic.biz.service.UnitViewSnapshotIndexService;
+import cn.icanci.loopstack.bic.common.model.snapshot.UnitViewSnapshotIndexVO;
+import cn.icanci.loopstack.bic.dal.mongo.common.PageList;
+import cn.icanci.loopstack.bic.dal.mongo.daointerface.UnitViewSnapshotIndexDAO;
+import cn.icanci.loopstack.bic.dal.mongo.dateobject.UnitViewSnapshotIndexDO;
+
+/**
+ * @author icanci
+ * @since 1.0 Created in 2023/09/20 21:45
+ */
+@Service
+public class UnitViewSnapshotIndexServiceImpl implements UnitViewSnapshotIndexService {
+
+ @Resource
+ private UnitViewSnapshotIndexDAO unitViewSnapshotIndexDAO;
+ @Resource
+ private UnitViewSnapshotIndexMapper unitViewSnapshotIndexMapper;
+
+ @Override
+ public List queryAll() {
+ return unitViewSnapshotIndexMapper.dos2vos(unitViewSnapshotIndexDAO.queryAll());
+ }
+
+ @Override
+ public void save(UnitViewSnapshotIndexVO unitViewSnapshotIndexVO) {
+ // TODO 日志记录
+ if (doInsert(unitViewSnapshotIndexVO)) {
+ UnitViewSnapshotIndexDO insert = unitViewSnapshotIndexMapper.vo2do(unitViewSnapshotIndexVO);
+ unitViewSnapshotIndexDAO.insert(insert);
+ } else {
+ unitViewSnapshotIndexDAO.update(unitViewSnapshotIndexMapper.vo2do(unitViewSnapshotIndexVO));
+ }
+ }
+
+ @Override
+ public UnitViewSnapshotIndexVO queryById(String id) {
+ return unitViewSnapshotIndexMapper.do2vo(unitViewSnapshotIndexDAO.queryOneById(id));
+ }
+
+ @Override
+ public PageList queryPage(UnitViewSnapshotIndexVO unitViewSnapshotIndexVO, int pageNum, int pageSize) {
+ PageList pageQuery = unitViewSnapshotIndexDAO.pageQuery(unitViewSnapshotIndexMapper.vo2do(unitViewSnapshotIndexVO), pageNum, pageSize);
+ return new PageList<>(unitViewSnapshotIndexMapper.dos2vos(pageQuery.getData()), pageQuery.getPaginator());
+
+ }
+
+ @Override
+ public UnitViewSnapshotIndexVO queryBySystemUuidAndUseCaseUuid(String systemUuid, String useCaseUuid) {
+ return unitViewSnapshotIndexMapper.do2vo(unitViewSnapshotIndexDAO.queryBySystemUuidAndUseCaseUuid(systemUuid, useCaseUuid));
+ }
+}
diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/thread/ThreadUtils.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/thread/ThreadUtils.java
new file mode 100644
index 0000000000000000000000000000000000000000..ddea0928a659e4a4aa5790f054459d41d4641cb8
--- /dev/null
+++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/thread/ThreadUtils.java
@@ -0,0 +1,33 @@
+package cn.icanci.loopstack.bic.biz.thread;
+
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * @author icanci(1205068)
+ * @version Id: ThreadUtils, v 0.1 2023/9/18 15:57 icanci Exp $
+ */
+public class ThreadUtils {
+ /** 当前服务核心数 */
+ private static final int CORE_SIZE = Runtime.getRuntime().availableProcessors();
+ /** 执行任务调度线程池 */
+ private static final ThreadPoolExecutor POOL = new ThreadPoolExecutor(CORE_SIZE, //
+ CORE_SIZE, //
+ 60L, //
+ TimeUnit.SECONDS, //
+ new LinkedBlockingQueue<>(2000), //
+ runnable -> new Thread(runnable, "ThreadUtils Biz Pool-" + runnable.hashCode()), //
+ (r, executor) -> {
+ throw new RuntimeException("ThreadUtils Biz Pool is EXHAUSTED!");
+ });
+
+ /**
+ * 线程执行
+ *
+ * @param command command
+ */
+ public static void execute(Runnable command) {
+ POOL.execute(command);
+ }
+}
diff --git a/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/daointerface/UnitViewSnapshotDAO.java b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/daointerface/UnitViewSnapshotDAO.java
index dba780966f9160ea7e09e77a4ef5732adef2c6c3..3c483c5b6cbc21d795a4b1f1c511583a959fa892 100644
--- a/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/daointerface/UnitViewSnapshotDAO.java
+++ b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/daointerface/UnitViewSnapshotDAO.java
@@ -8,7 +8,7 @@ import cn.icanci.loopstack.bic.dal.mongo.dateobject.UnitViewSnapshotDO;
*/
public interface UnitViewSnapshotDAO extends BaseDAO {
/** 文档对应的名字 */
- String COLLECTION_NAME = BASE_COLLECTION_NAME + "unit-view";
+ String COLLECTION_NAME = BASE_COLLECTION_NAME + "unit-view-snapshot";
/** 文档对应的Class */
Class COLLECTION_CLASS = UnitViewSnapshotDO.class;
diff --git a/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/daointerface/UnitViewSnapshotIndexDAO.java b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/daointerface/UnitViewSnapshotIndexDAO.java
new file mode 100644
index 0000000000000000000000000000000000000000..f89f812ffe4056b3fc1ba85073add20deeee7660
--- /dev/null
+++ b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/daointerface/UnitViewSnapshotIndexDAO.java
@@ -0,0 +1,23 @@
+package cn.icanci.loopstack.bic.dal.mongo.daointerface;
+
+import cn.icanci.loopstack.bic.dal.mongo.dateobject.UnitViewSnapshotIndexDO;
+
+/**
+ * @author icanci
+ * @since 1.0 Created in 2023/09/20 22:05
+ */
+public interface UnitViewSnapshotIndexDAO extends BaseDAO {
+ /** 文档对应的名字 */
+ String COLLECTION_NAME = BASE_COLLECTION_NAME + "unit-view-snapshot-index";
+ /** 文档对应的Class */
+ Class COLLECTION_CLASS = UnitViewSnapshotIndexDO.class;
+
+ UnitViewSnapshotIndexDO queryBySystemUuidAndUseCaseUuid(String systemUuid, String useCaseUuid);
+
+ /** 列 */
+ interface UnitViewSnapshotIndexColumn extends BaseColumn {
+ String SYSTEM_UUID = "systemUuid";
+ String USE_CASE_UUID = "useCaseUuid";
+ String VERSION = "version";
+ }
+}
diff --git a/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/dateobject/UnitViewSnapshotIndexDO.java b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/dateobject/UnitViewSnapshotIndexDO.java
new file mode 100644
index 0000000000000000000000000000000000000000..91af02c905578060dc4b2bee828d4e8943047742
--- /dev/null
+++ b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/dateobject/UnitViewSnapshotIndexDO.java
@@ -0,0 +1,17 @@
+package cn.icanci.loopstack.bic.dal.mongo.dateobject;
+
+import lombok.Data;
+
+/**
+ * @author icanci
+ * @since 1.0 Created in 2023/09/20 21:48
+ */
+@Data
+public class UnitViewSnapshotIndexDO extends BaseDO {
+ /** 系统关联id */
+ private String systemUuid;
+ /** 用例关联id */
+ private String useCaseUuid;
+ /** 版本 以时间戳为准 */
+ private long version;
+}
diff --git a/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/mongo/MongoUnitViewSnapshotIndexDAO.java b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/mongo/MongoUnitViewSnapshotIndexDAO.java
new file mode 100644
index 0000000000000000000000000000000000000000..868dbe9015b487c4cdbdd7c9dfeeb1bc84e59906
--- /dev/null
+++ b/dal/src/main/java/cn/icanci/loopstack/bic/dal/mongo/mongo/MongoUnitViewSnapshotIndexDAO.java
@@ -0,0 +1,75 @@
+package cn.icanci.loopstack.bic.dal.mongo.mongo;
+
+import java.util.List;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
+import org.springframework.stereotype.Service;
+
+import cn.icanci.loopstack.bic.dal.mongo.common.PageList;
+import cn.icanci.loopstack.bic.dal.mongo.daointerface.UnitViewSnapshotIndexDAO;
+import cn.icanci.loopstack.bic.dal.mongo.dateobject.UnitViewSnapshotIndexDO;
+
+/**
+ * @author icanci
+ * @since 1.0 Created in 2023/09/20 22:07
+ */
+@Service("unitViewSnapshotIndexDAO")
+public class MongoUnitViewSnapshotIndexDAO extends AbstractBaseDAO implements UnitViewSnapshotIndexDAO {
+ @Override
+ public void insert(UnitViewSnapshotIndexDO unitViewSnapshotIndexDO) {
+ super.insert(unitViewSnapshotIndexDO);
+ mongoTemplate.insert(unitViewSnapshotIndexDO, COLLECTION_NAME);
+ }
+
+ @Override
+ public void update(UnitViewSnapshotIndexDO unitViewSnapshotIndexDO) {
+ super.update(unitViewSnapshotIndexDO);
+ mongoTemplate.save(unitViewSnapshotIndexDO, COLLECTION_NAME);
+ }
+
+ @Override
+ public List queryAll() {
+ Criteria criteria = Criteria.where(UnitViewSnapshotIndexColumn.ENV).is(DEFAULT_ENV);
+ Query query = new Query(criteria);
+ return mongoTemplate.find(query, COLLECTION_CLASS, COLLECTION_NAME);
+ }
+
+ @Override
+ public PageList pageQuery(UnitViewSnapshotIndexDO unitViewSnapshotIndexDO, int pageNum, int pageSize) {
+ Criteria criteria = Criteria.where(UnitViewSnapshotIndexColumn.ENV).is(DEFAULT_ENV);
+ if (StringUtils.isNotBlank(unitViewSnapshotIndexDO.getSystemUuid())) {
+ criteria.and(UnitViewSnapshotIndexColumn.SYSTEM_UUID).is(unitViewSnapshotIndexDO.getSystemUuid());
+ }
+ if (StringUtils.isNotBlank(unitViewSnapshotIndexDO.getUseCaseUuid())) {
+ criteria.and(UnitViewSnapshotIndexColumn.USE_CASE_UUID).is(unitViewSnapshotIndexDO.getUseCaseUuid());
+ }
+ Query query = new Query(criteria);
+ query.with(Sort.by(Sort.Direction.DESC, UnitViewSnapshotIndexColumn.CREATE_TIME));
+ return pageQuery(query, COLLECTION_CLASS, pageSize, pageNum, COLLECTION_NAME);
+ }
+
+ @Override
+ public UnitViewSnapshotIndexDO queryOneById(String _id) {
+ Criteria criteria = Criteria.where(UnitViewSnapshotIndexColumn._ID).is(_id);
+ criteria.and(UnitViewSnapshotIndexColumn.ENV).is(DEFAULT_ENV);
+ Query query = new Query(criteria);
+ return mongoTemplate.findOne(query, COLLECTION_CLASS, COLLECTION_NAME);
+ }
+
+ @Override
+ public Class extends BaseColumn> getBaseColumn() {
+ return UnitViewSnapshotIndexColumn.class;
+ }
+
+ @Override
+ public UnitViewSnapshotIndexDO queryBySystemUuidAndUseCaseUuid(String systemUuid, String useCaseUuid) {
+ Criteria criteria = Criteria.where(UnitViewSnapshotIndexColumn.USE_CASE_UUID).is(useCaseUuid);
+ criteria.and(UnitViewSnapshotIndexColumn.ENV).is(DEFAULT_ENV);
+ criteria.and(UnitViewSnapshotIndexColumn.SYSTEM_UUID).is(systemUuid);
+ Query query = new Query(criteria);
+ return mongoTemplate.findOne(query, COLLECTION_CLASS, COLLECTION_NAME);
+ }
+}
diff --git a/graph/pom.xml b/graph/pom.xml
index b46b3ab27f1ab7f2040f220cd8b4325506ddc240..72e8a608f272705775b1a5302f03016ab31ae2d4 100644
--- a/graph/pom.xml
+++ b/graph/pom.xml
@@ -7,6 +7,7 @@
cn.icanci.loopstack.bic
1.0-SNAPSHOT
+
4.0.0
bic-graph
@@ -22,9 +23,8 @@
- cn.icanci.loopstack.bic
- bic-common
- ${parent.version}
+ com.google.guava
+ guava
\ No newline at end of file
diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/builder/EdgeDefaultDefineBuilder.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/builder/EdgeDefaultDefineBuilder.java
deleted file mode 100644
index a9bc4ebd3bc33e2a5008c2035a24e363bc9b9f30..0000000000000000000000000000000000000000
--- a/graph/src/main/java/cn/icanci/loopstack/bic/graph/builder/EdgeDefaultDefineBuilder.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package cn.icanci.loopstack.bic.graph.builder;
-
-/**
- * 边默认属性构建器
- *
- * @author icanci
- * @since 1.0 Created in 2023/08/21 14:03
- */
-public class EdgeDefaultDefineBuilder {
-}
diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/builder/NodeDefaultDefineBuilder.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/builder/NodeDefaultDefineBuilder.java
deleted file mode 100644
index 72cdcba06b8cf7fb20901fad7e6c864c5ee92975..0000000000000000000000000000000000000000
--- a/graph/src/main/java/cn/icanci/loopstack/bic/graph/builder/NodeDefaultDefineBuilder.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package cn.icanci.loopstack.bic.graph.builder;
-
-import java.util.List;
-
-import com.google.common.collect.Lists;
-
-import cn.icanci.loopstack.bic.graph.NodePortConstant;
-import cn.icanci.loopstack.bic.graph.node.*;
-
-/**
- * 节点默认属性构建器
- *
- * @author icanci
- * @since 1.0 Created in 2023/08/21 14:03
- */
-public class NodeDefaultDefineBuilder {
-
- /**
- * 构建默认 Node Port
- *
- * @return 返回NodePort
- */
- public static NodePort buildNodePort() {
- NodePort nodePort = new NodePort();
- nodePort.setGroups(buildGroups());
- nodePort.setItems(buildItems());
- return nodePort;
- }
-
- private static NodePortGroups buildGroups() {
- NodePortGroups groups = new NodePortGroups();
- groups.setIn(buildGroup(NodePortConstant.LEFT));
- groups.setOut(buildGroup(NodePortConstant.RIGHT));
- return groups;
- }
-
- private static NodePortGroup buildGroup(String position) {
- NodePortGroup group = new NodePortGroup();
- group.setPosition(position);
- group.setAttrs(buildAttrs());
- return group;
- }
-
- private static NodePortGroupAttrs buildAttrs() {
- NodePortGroupAttrs attrs = new NodePortGroupAttrs();
- attrs.setCircle(buildCircle());
- return attrs;
- }
-
- private static NodePortGroupAttrsCircle buildCircle() {
- NodePortGroupAttrsCircle circle = new NodePortGroupAttrsCircle();
- circle.setR(2);
- circle.setMagnet(true);
- circle.setStroke("#31d0c6");
- circle.setStrokeWidth(2);
- circle.setFill("#fff");
- return circle;
- }
-
- private static List buildItems() {
- List ret = Lists.newArrayList();
- ret.add(new NodePortItem(NodePortConstant.PORT_LEFT, NodePortConstant.IN));
- ret.add(new NodePortItem(NodePortConstant.PORT_RIGHT, NodePortConstant.OUT));
- return ret;
- }
-}
diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/BicFunction.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/BicFunction.java
deleted file mode 100644
index 42fc8f1e7dc7108b31371d89ee2a358a5b36f9c7..0000000000000000000000000000000000000000
--- a/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/BicFunction.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package cn.icanci.loopstack.bic.graph.function;
-
-/**
- * @author icanci
- * @since 1.0 Created in 2023/08/21 13:42
- */
-public interface BicFunction {
- /**
- * 函数调用结果
- *
- * @param context 函数调用上下文
- * @return 返回函数调用结果
- */
- FuncInvokeResponse invoke(FuncContext context);
-}
diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/FuncContext.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/FuncContext.java
deleted file mode 100644
index 69ca11533d289ad685f10d5d2e2281768ab89d79..0000000000000000000000000000000000000000
--- a/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/FuncContext.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package cn.icanci.loopstack.bic.graph.function;
-
-/**
- * @author icanci
- * @since 1.0 Created in 2023/08/21 13:39
- */
-public interface FuncContext {
-}
diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/FuncInvokeResponse.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/FuncInvokeResponse.java
deleted file mode 100644
index cdfcd1457f956c44640ee223a7a7e43385aa455e..0000000000000000000000000000000000000000
--- a/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/FuncInvokeResponse.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package cn.icanci.loopstack.bic.graph.function;
-
-/**
- * @author icanci
- * @since 1.0 Created in 2023/08/21 13:43
- */
-public interface FuncInvokeResponse {
-}
diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/edge/EdgeClickFunction.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/edge/EdgeClickFunction.java
deleted file mode 100644
index 2f8f4977cad6d8c923b47516970facfd646b61cd..0000000000000000000000000000000000000000
--- a/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/edge/EdgeClickFunction.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package cn.icanci.loopstack.bic.graph.function.edge;
-
-import cn.icanci.loopstack.bic.graph.function.BicFunction;
-import cn.icanci.loopstack.bic.graph.function.FuncContext;
-import cn.icanci.loopstack.bic.graph.function.FuncInvokeResponse;
-
-/**
- * @author icanci
- * @since 1.0 Created in 2023/08/21 13:42
- */
-public class EdgeClickFunction implements BicFunction {
-
- @Override
- public FuncInvokeResponse invoke(FuncContext context) {
- return null;
- }
-}
diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/edge/EdgeFuncContext.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/edge/EdgeFuncContext.java
deleted file mode 100644
index 328a0b5349e4e4f8008ac32e2070ee551198d931..0000000000000000000000000000000000000000
--- a/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/edge/EdgeFuncContext.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package cn.icanci.loopstack.bic.graph.function.edge;
-
-import cn.icanci.loopstack.bic.graph.function.FuncContext;
-
-/**
- * 边函数节点上下文
- *
- * @author icanci
- * @since 1.0 Created in 2023/08/21 13:39
- */
-public class EdgeFuncContext implements FuncContext {
-
-}
diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/node/NodeFuncContext.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/node/NodeFuncContext.java
deleted file mode 100644
index 12ee12c45b3516172a9aca9087cf465414051bdc..0000000000000000000000000000000000000000
--- a/graph/src/main/java/cn/icanci/loopstack/bic/graph/function/node/NodeFuncContext.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package cn.icanci.loopstack.bic.graph.function.node;
-
-import cn.icanci.loopstack.bic.graph.function.FuncContext;
-
-/**
- * Node节点函数上下文
- *
- * @author icanci
- * @since 1.0 Created in 2023/08/21 13:40
- */
-public class NodeFuncContext implements FuncContext {
-}
diff --git a/graph/src/main/java/cn/icanci/loopstack/bic/graph/node/UnitViewNode.java b/graph/src/main/java/cn/icanci/loopstack/bic/graph/node/UnitViewNode.java
new file mode 100644
index 0000000000000000000000000000000000000000..a542ba6db5bbd35fbc7fab87e8e937a2e880a667
--- /dev/null
+++ b/graph/src/main/java/cn/icanci/loopstack/bic/graph/node/UnitViewNode.java
@@ -0,0 +1,12 @@
+package cn.icanci.loopstack.bic.graph.node;
+
+import lombok.Data;
+
+/**
+ * @author icanci
+ * @since 1.0 Created in 2023/09/21 13:20
+ */
+@Data
+public class UnitViewNode extends Node {
+ // 节点的一些额外参数
+}
diff --git a/graph/src/test/java/cn/icanci/loopstack/bic/graph/builder/TestNodeBuilder.java b/graph/src/test/java/cn/icanci/loopstack/bic/graph/builder/TestNodeBuilder.java
deleted file mode 100644
index 1f771c60f51632b18d0e12ee41b4c5a08fdf4abb..0000000000000000000000000000000000000000
--- a/graph/src/test/java/cn/icanci/loopstack/bic/graph/builder/TestNodeBuilder.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package cn.icanci.loopstack.bic.graph.builder;
-
-import cn.hutool.json.JSONUtil;
-import cn.icanci.loopstack.bic.graph.node.NodePort;
-
-import org.junit.Test;
-
-/**
- * @author icanci
- * @since 1.0 Created in 2023/08/21 14:41
- */
-public class TestNodeBuilder {
- @Test
- public void testBuildNodePort() {
- NodePort nodePort = NodeDefaultDefineBuilder.buildNodePort();
- System.out.println(JSONUtil.toJsonStr(nodePort));
- }
-}