add - 添加抄送的元数据配置

This commit is contained in:
wangli 2024-03-14 16:17:07 +08:00
parent 0962cca8a9
commit 0f1cb771df
2 changed files with 59 additions and 0 deletions

View File

@ -3,6 +3,7 @@ package cn.axzo.workflow.core.common.utils;
import cn.axzo.workflow.common.enums.ApprovalMethodEnum;
import cn.axzo.workflow.common.model.request.bpmn.BpmnButtonConf;
import cn.axzo.workflow.common.model.request.bpmn.BpmnButtonMetaInfo;
import cn.axzo.workflow.common.model.request.bpmn.BpmnCarbonCopyConf;
import cn.axzo.workflow.common.model.request.bpmn.BpmnFieldConf;
import cn.axzo.workflow.common.model.request.bpmn.BpmnJsonModel;
import cn.axzo.workflow.common.model.request.bpmn.BpmnJsonNode;
@ -58,6 +59,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.UUID;
import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_BUTTON;
@ -561,6 +563,9 @@ public final class BpmnJsonConverterUtil {
convertToJson(bpmnModel);
ServiceTask serviceTask = (ServiceTask) bpmnModel.getFlowElement("node_197955885847");
Optional<List<BpmnCarbonCopyConf>> carbonCopyConfigs = BpmnMetaParserHelper.getCarbonCopyConfigs(serviceTask);
transformBytes(bpmnModel);
generateImage(bpmnModel);
}

View File

@ -5,8 +5,10 @@ import cn.axzo.workflow.common.enums.ApproverEmptyHandleTypeEnum;
import cn.axzo.workflow.common.enums.ApproverScopeEnum;
import cn.axzo.workflow.common.enums.ApproverSpecifyEnum;
import cn.axzo.workflow.common.enums.BpmnFlowNodeType;
import cn.axzo.workflow.common.enums.CarbonCopyObjectType;
import cn.axzo.workflow.common.model.request.bpmn.BpmnButtonConf;
import cn.axzo.workflow.common.model.request.bpmn.BpmnButtonMetaInfo;
import cn.axzo.workflow.common.model.request.bpmn.BpmnCarbonCopyConf;
import cn.axzo.workflow.common.model.request.bpmn.BpmnFieldConf;
import cn.axzo.workflow.common.model.request.bpmn.BpmnFieldOptionConf;
import cn.axzo.workflow.common.model.request.bpmn.BpmnNoticeConf;
@ -42,6 +44,11 @@ import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_BUTTON_TYPE_
import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_BUTTON_TYPE_CURRENT;
import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_BUTTON_TYPE_HISTORY;
import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_BUTTON_TYPE_INITIATOR;
import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_CARBON_COPIES;
import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_CARBON_COPY;
import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_CARBON_COPY_OBJECT;
import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_CARBON_COPY_SPECIFY;
import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_CARBON_COPY_TEMPLATE_CODE;
import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_FIELD;
import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_FIELD_META;
import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_FIELD_OPTION;
@ -73,6 +80,12 @@ public final class BpmnMetaParserHelper {
return Optional.ofNullable(process.getAttributeValue(null, FLOW_SERVER_VERSION));
}
/**
* 获取流程模型全局兜底的消息模板相关配置
*
* @param process
* @return
*/
public static Optional<BpmnNoticeConf> getNoticeConfig(Process process) {
List<ExtensionElement> elements = process.getExtensionElements().getOrDefault(CONFIG_NOTICE,
Collections.emptyList());
@ -116,6 +129,47 @@ public final class BpmnMetaParserHelper {
});
}
/**
* 获取抄送节点(ServiceTask) 下的抄送配置元数据
* <p>
* 目前抄送统一使用 ServiceTask 来实现
*
* @param serviceTask
* @return
*/
public static Optional<List<BpmnCarbonCopyConf>> getCarbonCopyConfigs(ServiceTask serviceTask) {
return parseCarbonCopyConfig(serviceTask.getExtensionElements().getOrDefault(CONFIG_CARBON_COPIES,
Collections.emptyList()));
}
private static Optional<List<BpmnCarbonCopyConf>> parseCarbonCopyConfig(List<ExtensionElement> elements) {
if (CollectionUtils.isEmpty(elements) || CollectionUtils.isEmpty(elements.get(0).getChildElements())) {
return Optional.empty();
}
List<BpmnCarbonCopyConf> confs = new ArrayList<>();
elements.get(0).getChildElements().get(CONFIG_CARBON_COPY).forEach(e -> {
BpmnCarbonCopyConf bpmnCarbonCopyConf = new BpmnCarbonCopyConf();
buildCarbonCopyConfig(e, bpmnCarbonCopyConf);
confs.add(bpmnCarbonCopyConf);
});
return Optional.of(confs);
}
private static void buildCarbonCopyConfig(ExtensionElement element, BpmnCarbonCopyConf bpmnCarbonCopyConf) {
String carbonCopyObject =
element.getChildElements().get(CONFIG_CARBON_COPY_OBJECT).get(0).getAttributeValue(null,
ELEMENT_ATTRIBUTE_VALUE);
bpmnCarbonCopyConf.setCarbonCopyObjectType(CarbonCopyObjectType.valueOfType(carbonCopyObject));
String carbonCopySpecify = element.getChildElements().get(CONFIG_CARBON_COPY_SPECIFY).get(0).getElementText();
bpmnCarbonCopyConf.setSpecifyValue(carbonCopySpecify);
String carbonCopyTemplateCode =
element.getChildElements().get(CONFIG_CARBON_COPY_TEMPLATE_CODE).get(0).getAttributeValue(null,
ELEMENT_ATTRIBUTE_VALUE);
bpmnCarbonCopyConf.setTemplateCode(carbonCopyTemplateCode);
}
public static Optional<BpmnButtonConf> getButtonConfig(Process process) {
return parseButtonConfig(process.getExtensionElements().getOrDefault(CONFIG_BUTTON, Collections.emptyList()));
}