端到端功能后台应用功能入口部分提交
This commit is contained in:
parent
d0e3428cd5
commit
4aaa69a671
Binary file not shown.
@ -12,7 +12,7 @@
|
||||
<installDate>2022-06-08 21:10:35</installDate>
|
||||
<upgradeDate>2022-06-13 09:36:32</upgradeDate>
|
||||
<installListener/>
|
||||
<pluginListener>com.actionsoft.apps.coe.method.process.subprocess.Plugins</pluginListener>
|
||||
<pluginListener>com.actionsoft.apps.coe.method.process.subprocess.plugin.Plugins</pluginListener>
|
||||
<startListener/>
|
||||
<stopListener/>
|
||||
<upgradeListener/>
|
||||
@ -24,4 +24,7 @@
|
||||
<icon code="&#xe703;" color="#dc4f39"/>
|
||||
<requires/>
|
||||
<palMethodIcon>{"process.epc":{"code": "&#xe605;","color": "#4E7FF9"}}</palMethodIcon>
|
||||
<properties>
|
||||
<property action="disabled" group="功能入口相关" name="SUB_PROCESS_MODEL_LOCATION" title="端到端模型存放目录" type="input" isSystem="false" desc="指定生成的端到端模型存放的根目录" ref="">process/3d2f5b3d-3e66-4777-808a-2c56e91dc8cc</property>
|
||||
</properties>
|
||||
</app>
|
||||
|
||||
@ -0,0 +1,95 @@
|
||||
package com.actionsoft.apps.coe.method.process.subprocess;
|
||||
|
||||
import com.actionsoft.apps.coe.method.process.subprocess.web.SubProcessWeb;
|
||||
import com.actionsoft.bpms.commons.mvc.view.ResponseObject;
|
||||
import com.actionsoft.bpms.server.UserContext;
|
||||
import com.actionsoft.bpms.server.bind.annotation.Controller;
|
||||
import com.actionsoft.bpms.server.bind.annotation.Mapping;
|
||||
import com.actionsoft.exception.AWSException;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
|
||||
/**
|
||||
* @author oYang
|
||||
* @create 2023-05-09 15:37
|
||||
*/
|
||||
@Controller
|
||||
public class SubProcessController {
|
||||
|
||||
/**
|
||||
* 功能入口->获取部分初始数据
|
||||
* @param uc
|
||||
* @return
|
||||
*/
|
||||
@Mapping("com.actionsoft.apps.coe.method.process.subprocess.init_data")
|
||||
public String initData(UserContext uc){
|
||||
try {
|
||||
SubProcessWeb processWeb = new SubProcessWeb(uc);
|
||||
return processWeb.initData();
|
||||
} catch (AWSException e) {
|
||||
return ResponseObject.newErrResponse(e.getMessage()).toString();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 功能入口->子流程树加载接口
|
||||
* 端到端功能入口处 加载流程文件树 调用资产库主界面左侧树方法API
|
||||
* 在此基础上保留 EPC与泳道图 其它建模类型的模型过滤掉
|
||||
* @param uc
|
||||
* @param wsId
|
||||
* @param teamId
|
||||
* @param pid
|
||||
* @param createUsers
|
||||
* @param orgIds
|
||||
* @param methodIds
|
||||
* @return
|
||||
*/
|
||||
@Mapping("com.actionsoft.apps.coe.method.process.subprocess.find_tree_node")
|
||||
public String findSubProcessModelTreeNode(UserContext uc, String wsId, String teamId, String pid, String createUsers, String orgIds, String methodIds){
|
||||
SubProcessWeb processWeb = new SubProcessWeb(uc);
|
||||
return processWeb.findSubProcessTreeNode(wsId, teamId, pid, createUsers, orgIds, methodIds);
|
||||
}
|
||||
|
||||
/**
|
||||
* 功能入口->子流程选择接口
|
||||
* 根据选择的树节点 返回节点下所有子级节点(不限于一级子节点)
|
||||
* @param uc
|
||||
* @param nodeKeyJsonArr
|
||||
* @return
|
||||
*/
|
||||
@Mapping("com.actionsoft.apps.coe.method.process.subprocess.find_tree_child_node_all")
|
||||
public String findModeTreeChildNodeAll(UserContext uc, String nodeKeyJsonArr){
|
||||
try {
|
||||
SubProcessWeb processWeb = new SubProcessWeb(uc);
|
||||
JSONArray childNodeAll = processWeb.findModeTreeChildNodeAll(nodeKeyJsonArr);
|
||||
ResponseObject ro = ResponseObject.newOkResponse("查询成功");
|
||||
ro.setData(childNodeAll);
|
||||
return ro.toString();
|
||||
} catch (AWSException e) {
|
||||
return ResponseObject.newErrResponse(e.getMessage()).toString();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 功能入口->加载位置树
|
||||
* @param uc
|
||||
* @param wsId
|
||||
* @param teamId
|
||||
* @param pid
|
||||
* @return
|
||||
*/
|
||||
@Mapping("com.actionsoft.apps.coe.method.process.subprocess.construct_position_tree")
|
||||
public String constructPositionTree(UserContext uc, String wsId, String teamId, String pid){
|
||||
try {
|
||||
SubProcessWeb processWeb = new SubProcessWeb(uc);
|
||||
JSONArray data = processWeb.constructPositionTree(wsId, teamId, pid);
|
||||
ResponseObject ro = ResponseObject.newOkResponse("查询成功");
|
||||
ro.setData(data);
|
||||
return ro.toString();
|
||||
} catch (AWSException e) {
|
||||
return ResponseObject.newErrResponse(e.getMessage()).toString();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
package com.actionsoft.apps.coe.method.process.subprocess.constant;
|
||||
|
||||
/**
|
||||
* @author oYang
|
||||
* @create 2023-05-10 15:35
|
||||
*/
|
||||
public interface SubProcessConst {
|
||||
|
||||
// 应用ID
|
||||
String APP_ID = "com.actionsoft.apps.coe.method.process.subprocess";
|
||||
|
||||
// 端到端流程存放父节点 参数名
|
||||
String SUB_PROCESS_MODEL_LOCATION = "SUB_PROCESS_MODEL_LOCATION";
|
||||
}
|
||||
@ -0,0 +1,40 @@
|
||||
package com.actionsoft.apps.coe.method.process.subprocess.model.vo;
|
||||
|
||||
/**
|
||||
* @author oYang
|
||||
* @create 2023-05-10 11:06
|
||||
*/
|
||||
public class SubProcessTagVo {
|
||||
|
||||
private String label;
|
||||
private String value;
|
||||
|
||||
public SubProcessTagVo(String label, String value) {
|
||||
this.label = label;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public String getLabel() {
|
||||
return label;
|
||||
}
|
||||
|
||||
public void setLabel(String label) {
|
||||
this.label = label;
|
||||
}
|
||||
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public void setValue(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "SubProcessTagVo{" +
|
||||
"label='" + label + '\'' +
|
||||
", value='" + value + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
@ -1,4 +1,4 @@
|
||||
package com.actionsoft.apps.coe.method.process.subprocess;
|
||||
package com.actionsoft.apps.coe.method.process.subprocess.plugin;
|
||||
|
||||
import com.actionsoft.apps.listener.PluginListener;
|
||||
import com.actionsoft.apps.resource.AppContext;
|
||||
@ -0,0 +1,201 @@
|
||||
package com.actionsoft.apps.coe.method.process.subprocess.web;
|
||||
|
||||
import com.actionsoft.apps.coe.method.process.subprocess.constant.SubProcessConst;
|
||||
import com.actionsoft.apps.coe.method.process.subprocess.model.vo.SubProcessTagVo;
|
||||
import com.actionsoft.apps.coe.pal.constant.CoEConstant;
|
||||
import com.actionsoft.apps.coe.pal.pal.repository.PALRepositoryQueryAPIManager;
|
||||
import com.actionsoft.apps.coe.pal.pal.repository.cache.PALRepositoryCache;
|
||||
import com.actionsoft.apps.coe.pal.pal.repository.model.PALRepositoryModel;
|
||||
import com.actionsoft.apps.coe.pal.pal.repository.web.CoeProcessLevelWeb;
|
||||
import com.actionsoft.bpms.commons.mvc.view.ActionWeb;
|
||||
import com.actionsoft.bpms.commons.mvc.view.ResponseObject;
|
||||
import com.actionsoft.bpms.server.UserContext;
|
||||
import com.actionsoft.bpms.util.UtilString;
|
||||
import com.actionsoft.exception.AWSException;
|
||||
import com.actionsoft.i18n.I18nRes;
|
||||
import com.actionsoft.sdk.local.SDK;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.apache.commons.collections4.IteratorUtils;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author oYang
|
||||
* @create 2023-05-09 15:49
|
||||
*/
|
||||
public class SubProcessWeb extends ActionWeb {
|
||||
|
||||
private UserContext uc;
|
||||
|
||||
public SubProcessWeb(UserContext uc) {
|
||||
super(uc);
|
||||
this.uc = uc;
|
||||
}
|
||||
|
||||
public String initData() throws AWSException{
|
||||
// 获取端到端文件存储的根目录
|
||||
String property = SDK.getAppAPI().getProperty(SubProcessConst.APP_ID, SubProcessConst.SUB_PROCESS_MODEL_LOCATION);
|
||||
if (UtilString.isEmpty(property))
|
||||
throw new AWSException("应用参数【" + SubProcessConst.SUB_PROCESS_MODEL_LOCATION + "】异常");
|
||||
String[] locationIds = property.split("/");
|
||||
|
||||
StringBuffer dirName = new StringBuffer(I18nRes.findValue(CoEConstant.APP_ID, locationIds[0]) + "/");
|
||||
for (int i = 1; i < locationIds.length; i++) {
|
||||
PALRepositoryModel model = PALRepositoryCache.getCache().get(locationIds[i]);
|
||||
dirName.append(model.getName()).append("/");
|
||||
}
|
||||
|
||||
ResponseObject ro = ResponseObject.newOkResponse();
|
||||
ro.put("dirRootName", dirName.toString());
|
||||
ro.put("dirRootPath", property);
|
||||
return ro.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 资产库主界面左侧树适配
|
||||
* @param wsId
|
||||
* @param teamId
|
||||
* @param pid
|
||||
* @param createUsers
|
||||
* @param orgIds
|
||||
* @param methodIds
|
||||
* @return
|
||||
* @throws AWSException
|
||||
*/
|
||||
public String findSubProcessTreeNode(String wsId, String teamId, String pid, String createUsers, String orgIds, String methodIds) throws AWSException{
|
||||
// 调用资产库主界面左侧树的API
|
||||
CoeProcessLevelWeb processLevelWeb = new CoeProcessLevelWeb(uc);
|
||||
String result = processLevelWeb.getPalProcesslevelTreeData(wsId, teamId, pid, createUsers, orgIds, methodIds);
|
||||
// 解析API返回结果
|
||||
ResponseObject ro = ResponseObject.parse(result);
|
||||
JSONArray data = ro.getData(JSONArray.class);
|
||||
if (UtilString.isEmpty(pid)){
|
||||
data = data.stream()
|
||||
.filter(item -> "process".equals(((JSONObject)item).getString("plCategory")))
|
||||
.collect(Collectors.toCollection(JSONArray::new));
|
||||
}else {
|
||||
// 保留EPC 与 泳道图 其它过滤掉
|
||||
data = data.stream()
|
||||
.filter(item -> {
|
||||
JSONObject model = (JSONObject) item;
|
||||
boolean flag = false;
|
||||
if ("process.framework".equals(model.getString("plMethodId")) || "default".equals(model.getString("plMethodId"))){
|
||||
// 递归判断该架构或者该文件夹是否保留
|
||||
flag = this.isContainEpcOrFlowChart(model.getString("wsId"),model.getString("versionId"));
|
||||
}else if ("process.epc".equals(model.getString("plMethodId")) || "process.flowchart".equals(model.getString("plMethodId"))){
|
||||
flag = true;
|
||||
}
|
||||
return flag;
|
||||
})
|
||||
.collect(Collectors.toCollection(JSONArray::new));
|
||||
}
|
||||
ro.setData(data);
|
||||
return ro.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 递归判断当前架构或者文件夹是否包含 EPC或者泳道图
|
||||
* @param wsId
|
||||
* @param pid
|
||||
* @return
|
||||
*/
|
||||
private boolean isContainEpcOrFlowChart(String wsId, String pid){
|
||||
boolean flag = false;
|
||||
Iterator<PALRepositoryModel> iterator = PALRepositoryCache.getByPid(wsId, pid);
|
||||
if (!iterator.hasNext()) return flag;
|
||||
while (iterator.hasNext()){
|
||||
PALRepositoryModel currentModel = iterator.next();
|
||||
if ("process.framework".equals(currentModel.getMethodId()) || "default".equals(currentModel.getMethodId())){
|
||||
flag = this.isContainEpcOrFlowChart(wsId, currentModel.getVersionId());
|
||||
}else if ("process.epc".equals(currentModel.getMethodId()) || "process.flowchart".equals(currentModel.getMethodId())){
|
||||
flag = true;
|
||||
}
|
||||
if (flag) break;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询当前节点下的所有子级节点
|
||||
* @param nodeKeyJsonArr nodeKey的JSONArray字符串
|
||||
* @return JSONArray
|
||||
* @throws AWSException
|
||||
*/
|
||||
public JSONArray findModeTreeChildNodeAll(String nodeKeyJsonArr) throws AWSException{
|
||||
if (UtilString.isEmpty(nodeKeyJsonArr)) {
|
||||
throw new AWSException("参数异常");
|
||||
}
|
||||
List<SubProcessTagVo> tagVoList = new ArrayList<>();
|
||||
Set<String> filterKeySet = new HashSet<>();
|
||||
List<String> nodeKeys = JSONArray.parseArray(nodeKeyJsonArr, String.class);
|
||||
List<PALRepositoryModel> modelList = new ArrayList<>();
|
||||
for (String nodeKey : nodeKeys) {
|
||||
PALRepositoryModel repositoryModel = PALRepositoryCache.getCache().get(nodeKey);
|
||||
modelList.add(repositoryModel);
|
||||
}
|
||||
this.handleModelTreeChildNode(modelList, tagVoList, filterKeySet);
|
||||
return (JSONArray) JSONArray.toJSON(tagVoList);
|
||||
}
|
||||
|
||||
private void handleModelTreeChildNode(List<PALRepositoryModel> modelList, List<SubProcessTagVo> tagVoList, Set<String> filterKeySet){
|
||||
|
||||
for (PALRepositoryModel model : modelList) {
|
||||
if (!("process.framework".equals(model.getMethodId())
|
||||
|| "default".equals(model.getMethodId()))){
|
||||
// 当前模型不是架构或者文件夹 则直接放入返回列表中
|
||||
if (!filterKeySet.contains(model.getId())){
|
||||
SubProcessTagVo tagVo = new SubProcessTagVo(model.getName(), model.getId());
|
||||
tagVoList.add(tagVo);
|
||||
filterKeySet.add(model.getId());
|
||||
}
|
||||
continue;
|
||||
}
|
||||
// 获取当前模型的一级子节点
|
||||
Iterator<PALRepositoryModel> iterator = PALRepositoryCache.getByPid(model.getWsId(), model.getId());
|
||||
List<PALRepositoryModel> list = IteratorUtils.toList(iterator);
|
||||
handleModelTreeChildNode(list, tagVoList, filterKeySet);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 调用资产库主界面左侧树 API
|
||||
* 在此基础上保留文件夹与架构
|
||||
* 其它模型文件过滤掉
|
||||
* @param wsId
|
||||
* @param teamId
|
||||
* @param pid
|
||||
* @return
|
||||
* @throws AWSException
|
||||
*/
|
||||
public JSONArray constructPositionTree(String wsId, String teamId, String pid) throws AWSException {
|
||||
String property = SDK.getAppAPI().getProperty(SubProcessConst.APP_ID, SubProcessConst.SUB_PROCESS_MODEL_LOCATION);
|
||||
if (UtilString.isEmpty(property))
|
||||
throw new AWSException("应用参数【" + SubProcessConst.SUB_PROCESS_MODEL_LOCATION + "】异常");
|
||||
String[] locationIds = property.split("/");
|
||||
if (UtilString.isEmpty(pid)){
|
||||
JSONArray result = PALRepositoryQueryAPIManager.getInstance().getPalRepositoryTreeRoot(uc, wsId, null, teamId);
|
||||
result = result.stream()
|
||||
.filter(item -> {
|
||||
JSONObject model = (JSONObject) item;
|
||||
return locationIds[0].equals(model.getString("id"));
|
||||
}).collect(Collectors.toCollection(JSONArray :: new));
|
||||
return result;
|
||||
}
|
||||
JSONArray result = PALRepositoryQueryAPIManager.getInstance().getUsedPalRepositoryTreeDataByPidNew(uc, wsId, teamId, pid);
|
||||
if (locationIds[0].equals(pid)){
|
||||
result = result.stream()
|
||||
.filter(item -> locationIds[1].equals(((JSONObject)item).getString("id")))
|
||||
.collect(Collectors.toCollection(JSONArray :: new));
|
||||
return result;
|
||||
}
|
||||
result = result.stream()
|
||||
.filter(item -> {
|
||||
boolean flag = false;
|
||||
JSONObject model = (JSONObject) item;
|
||||
return flag = "default".equals(model.getString("plMethodId")) || "".equals(model.getString("plMethodId"));
|
||||
}).collect(Collectors.toCollection(JSONArray :: new));
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<aws-actions>
|
||||
<cmd-bean name="com.actionsoft.apps.coe.method.process.subprocess.init_data"/>
|
||||
<cmd-bean name="com.actionsoft.apps.coe.method.process.subprocess.find_tree_node">
|
||||
<param name="wsId"/>
|
||||
<param name="teamId"/>
|
||||
<param name="pid"/>
|
||||
<param name="createUsers"/>
|
||||
<param name="orgIds"/>
|
||||
<param name="methodIds"/>
|
||||
</cmd-bean>
|
||||
<cmd-bean name="com.actionsoft.apps.coe.method.process.subprocess.find_tree_child_node_all">
|
||||
<param name="nodeKeyJsonArr"/>
|
||||
</cmd-bean>
|
||||
<cmd-bean name="com.actionsoft.apps.coe.method.process.subprocess.construct_position_tree">
|
||||
<param name="wsId"/>
|
||||
<param name="teamId"/>
|
||||
<param name="pid"/>
|
||||
</cmd-bean>
|
||||
</aws-actions>
|
||||
Loading…
Reference in New Issue
Block a user