package jnpf.dmsService; import jnpf.flowable.entity.TemplateJsonEntity; import jnpf.flowable.entity.TemplateNodeEntity; import jnpf.flowable.enums.NodeEnum; import java.util.ArrayList; import java.util.Date; import java.util.List; final class DmsQianpiyeFlowFixtures { static final List STEP_NAMES = List.of("发起申请", "部门审核", "起草人", "文件审批", "起草人与客户确认", "QA审批", "起草人", "文件培训"); private DmsQianpiyeFlowFixtures() { } static List steps(String prefix) { List nodes = new ArrayList<>(); for (int index = 0; index < STEP_NAMES.size(); index++) { TemplateNodeEntity node = new TemplateNodeEntity(); node.setId(prefix + "-row-" + (STEP_NAMES.size() - index)); node.setNodeCode(prefix + index); node.setNodeType(index == 0 ? NodeEnum.START.getType() : NodeEnum.APPROVER.getType()); node.setNodeJson("{\"nodeName\":\"" + STEP_NAMES.get(index) + "\"}"); node.setCreatorTime(new Date(1000L * (STEP_NAMES.size() - index))); nodes.add(node); } return nodes; } static TemplateJsonEntity version(String id, String prefix) { TemplateJsonEntity version = new TemplateJsonEntity(); version.setId(id); version.setState(1); version.setVersion("1.0"); version.setFlowXml(linearXml(steps(prefix).stream().map(TemplateNodeEntity::getNodeCode) .toArray(String[]::new))); return version; } static String linearXml(String... codes) { StringBuilder xml = new StringBuilder(""); xml.append(""); // Deliberately store task elements in the opposite order from their connections. for (int index = codes.length - 1; index > 0; index--) { xml.append(""); } for (int index = 1; index < codes.length; index++) { xml.append(""); } return xml.append("").toString(); } }