diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/constant/BpmnConstants.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/constant/BpmnConstants.java index 1329559b6..6d30f47be 100644 --- a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/constant/BpmnConstants.java +++ b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/constant/BpmnConstants.java @@ -121,6 +121,8 @@ public interface BpmnConstants { String CONFIG_BUTTON_TYPE_HISTORY = "history"; String CONFIG_BUTTON_TYPE_CARBON_COPY = "carbonCopy"; String CONFIG_SIGN_TYPE = "signType"; + String CONFIG_AREA_FILTER_ENABLE = "areaFilterEnable"; + String CONFIG_SPECIALTY_FILTER_ENABLE = "specialtyFilterEnable"; String ELEMENT_ATTRIBUTE_NAME = "name"; String ELEMENT_ATTRIBUTE_VALUE = "value"; String ELEMENT_ATTRIBUTE_DESC = "desc"; diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/dto/CooperationOrgDTO.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/dto/CooperationOrgDTO.java index 5e9f2edfb..0106ffb23 100644 --- a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/dto/CooperationOrgDTO.java +++ b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/dto/CooperationOrgDTO.java @@ -31,12 +31,12 @@ public class CooperationOrgDTO implements Serializable { private Long nodeId; /** - * 基于人权事的,需要排除的身份类型 + * 基于人权事的,指定某些管理管辖人员 */ private List includeAreaCodes; /** - * 基于人权事的,需要排除的参建单位类型 + * 基于人权事的,指定专业管辖人员 */ private List includeSpecialtyCodes; diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/common/utils/BpmnJsonConverterUtil.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/common/utils/BpmnJsonConverterUtil.java index f4709a85b..82bf275a7 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/common/utils/BpmnJsonConverterUtil.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/common/utils/BpmnJsonConverterUtil.java @@ -129,6 +129,7 @@ import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getApprove import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getApproverSpecifyRangeUnit; import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getApproverSpecifyValue; import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getApproverSpecifyValueV2; +import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getAreaFilterEnable; import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getButtonConfig; import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getCategoryVersion; import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getCooperateShipType; @@ -140,6 +141,7 @@ import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getInitiat import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getNoticeConfig; import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getProcessApproveConf; import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getSignConfig; +import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getSpecialtyFilterEnable; /** * BPMN json 格式转换工具 @@ -856,6 +858,8 @@ public final class BpmnJsonConverterUtil { Optional cooperateShipType = getCooperateShipType(flowElement); Optional approverSpecifyRangeUnit = getApproverSpecifyRangeUnit(flowElement); Optional approverSpecifyRangeOrgLimit = getApproverSpecifyRangeOrgLimit(flowElement); + Boolean areaFilterEnable = getAreaFilterEnable(flowElement); + Boolean specialtyFilterEnable = getSpecialtyFilterEnable(flowElement); // generateImage(bpmnModel); byte[] xml = transformBytes(bpmnModel); diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/common/utils/BpmnMetaParserHelper.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/common/utils/BpmnMetaParserHelper.java index 9c22a3ae1..221a1cc77 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/common/utils/BpmnMetaParserHelper.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/common/utils/BpmnMetaParserHelper.java @@ -71,6 +71,7 @@ import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_APPROVE_SPEC import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_APPROVE_SPECIFY_RANGE; import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_APPROVE_SPECIFY_RANGE_ORG_LIMIT; import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_APPROVE_SPECIFY_RANGE_UNIT; +import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_AREA_FILTER_ENABLE; import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_BUTTON; import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_BUTTON_META; import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_BUTTON_TYPE_CARBON_COPY; @@ -96,6 +97,7 @@ import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_SIGN_APPROVE import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_SIGN_APPROVER_ORG_LIMIT; import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_SIGN_APPROVER_ROLE_LIMIT; import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_SIGN_TYPE; +import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_SPECIALTY_FILTER_ENABLE; import static cn.axzo.workflow.common.constant.BpmnConstants.ELEMENT_ATTRIBUTE_APPROVER_SPECIFY; import static cn.axzo.workflow.common.constant.BpmnConstants.ELEMENT_ATTRIBUTE_CHECKED; import static cn.axzo.workflow.common.constant.BpmnConstants.ELEMENT_ATTRIBUTE_CODE; @@ -691,6 +693,14 @@ public final class BpmnMetaParserHelper { && Objects.equals(specifyEnum, ApproverSpecifyEnum.initiatorSpecified); } + public static Boolean getAreaFilterEnable(FlowElement flowElement){ + return defaultValid(flowElement, CONFIG_AREA_FILTER_ENABLE).map(element -> Boolean.valueOf(element.getAttributeValue(null, ELEMENT_ATTRIBUTE_CHECKED))).orElse(false); + } + + public static Boolean getSpecialtyFilterEnable(FlowElement flowElement){ + return defaultValid(flowElement, CONFIG_SPECIALTY_FILTER_ENABLE).map(element -> Boolean.valueOf(element.getAttributeValue(null, ELEMENT_ATTRIBUTE_CHECKED))).orElse(false); + } + private static Optional defaultValid(FlowElement flowElement, String elementName) { if (Objects.isNull(flowElement)) { return Optional.empty(); diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/converter/json/UserTaskJsonConverter.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/converter/json/UserTaskJsonConverter.java index b6ccc143a..45f7038fb 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/converter/json/UserTaskJsonConverter.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/converter/json/UserTaskJsonConverter.java @@ -39,6 +39,7 @@ import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_APPROVE_SPEC import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_APPROVE_SPECIFY_RANGE; import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_APPROVE_SPECIFY_RANGE_ORG_LIMIT; import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_APPROVE_SPECIFY_RANGE_UNIT; +import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_AREA_FILTER_ENABLE; import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_BUTTON; import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_BUTTON_TYPE_CARBON_COPY; import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_BUTTON_TYPE_CURRENT; @@ -53,6 +54,7 @@ import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_INITIATOR_SP import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_SIGN_APPROVER_LIMIT; import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_SIGN_APPROVER_ORG_LIMIT; import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_SIGN_APPROVER_ROLE_LIMIT; +import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_SPECIALTY_FILTER_ENABLE; import static cn.axzo.workflow.common.constant.BpmnConstants.ELEMENT_ATTRIBUTE_APPROVER_SPECIFY; import static cn.axzo.workflow.common.constant.BpmnConstants.ELEMENT_ATTRIBUTE_CHECKED; import static cn.axzo.workflow.common.constant.BpmnConstants.ELEMENT_ATTRIBUTE_DESC; @@ -163,9 +165,24 @@ public class UserTaskJsonConverter extends AbstractBpmnJsonConverter { buildMetaButton(buttonConf.getHistory(), CONFIG_BUTTON_TYPE_HISTORY, buttonConfigElement); buildMetaButton(buttonConf.getCarbonCopy(), CONFIG_BUTTON_TYPE_CARBON_COPY, buttonConfigElement); } - userTask.addExtensionElement(buttonConfigElement); + ExtensionElement areaFilterEnableElement = new ExtensionElement(); + areaFilterEnableElement.setName(CONFIG_AREA_FILTER_ENABLE); + ExtensionAttribute areaFilterEnableAttribute = new ExtensionAttribute(); + areaFilterEnableAttribute.setName(ELEMENT_ATTRIBUTE_CHECKED); + areaFilterEnableAttribute.setValue(String.valueOf(Boolean.TRUE.equals(node.getProperty().getAreaFilterEnable()))); + areaFilterEnableElement.addAttribute(areaFilterEnableAttribute); + userTask.addExtensionElement(areaFilterEnableElement); + + ExtensionElement specialtyFilterEnableElement = new ExtensionElement(); + specialtyFilterEnableElement.setName(CONFIG_SPECIALTY_FILTER_ENABLE); + ExtensionAttribute specialtyFilterEnableAttribute = new ExtensionAttribute(); + specialtyFilterEnableAttribute.setName(ELEMENT_ATTRIBUTE_CHECKED); + specialtyFilterEnableAttribute.setValue(String.valueOf(Boolean.TRUE.equals(node.getProperty().getSpecialtyFilterEnable()))); + specialtyFilterEnableElement.addAttribute(specialtyFilterEnableAttribute); + userTask.addExtensionElement(specialtyFilterEnableElement); + //添加自动审批配置 ExtensionElement autoApprovalExtensionElement = new ExtensionElement(); ExtensionAttribute pendingMessageAttribute = new ExtensionAttribute(); diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BasedIdentityV2TaskAssigneeSelector.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BasedIdentityV2TaskAssigneeSelector.java index 03004696b..8523a35cd 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BasedIdentityV2TaskAssigneeSelector.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BasedIdentityV2TaskAssigneeSelector.java @@ -8,8 +8,6 @@ import cn.axzo.orggateway.api.nodeuser.req.FlowTaskAssignerV2Req; import cn.axzo.orggateway.api.nodeuser.resp.FlowTaskAssignerV2Resp; import cn.axzo.workflow.common.enums.ApproverSpecifyEnum; import cn.axzo.workflow.common.enums.ApproverSpecifyRangeEnum; -import cn.axzo.workflow.common.enums.ApproverSpecifyRangeUnitEnum; -import cn.axzo.workflow.common.enums.CooperateShipTypeEnum; import cn.axzo.workflow.common.enums.SignApproverOrgLimitEnum; import cn.axzo.workflow.common.exception.WorkflowEngineException; import cn.axzo.workflow.common.model.dto.CooperationOrgDTO; @@ -31,20 +29,18 @@ import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; -import static cn.axzo.workflow.common.code.FlowableEngineRespCode.ENGINE_IDENTITY_V2_CONFIG_INVALID; import static cn.axzo.workflow.common.code.FlowableEngineRespCode.ENGINE_ROLE_V2_CONFIG_INVALID; import static cn.axzo.workflow.common.code.FlowableEngineRespCode.ENGINE_USER_TASK_TYPE_NOT_SUPPORT; import static cn.axzo.workflow.common.constant.BpmnConstants.BIZ_ORG_RELATION; import static cn.axzo.workflow.common.constant.BpmnConstants.CLOSE_PROCESS_ASSIGNER; import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_INITIATOR; import static cn.axzo.workflow.common.enums.ApproverEmptyHandleTypeEnum.transferToAdmin; -import static cn.axzo.workflow.common.enums.ApproverSpecifyRangeUnitEnum.in_project; import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getApproverEmptyHandleType; import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getApproverSpecifyRange; import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getApproverSpecifyRangeOrgLimit; -import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getApproverSpecifyRangeUnit; import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getApproverSpecifyValueV2; -import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getCooperateShipType; +import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getAreaFilterEnable; +import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getSpecialtyFilterEnable; /** * 基于新版配置的身份查询审批人 @@ -79,9 +75,9 @@ public class BasedIdentityV2TaskAssigneeSelector extends AbstractBpmnTaskAssigne .scene(FlowTaskAssignerQuerySceneEnum.BY_ROLE) .identities(getApproverSpecifyValue(flowElement)) .initiatorPersonId(initiator.parsePersonId()) - .areaCodes(Sets.newHashSet(ListUtils.emptyIfNull(orgDTO.getIncludeAreaCodes()))) - .specialtyCodes(Sets.newHashSet(ListUtils.emptyIfNull(orgDTO.getIncludeSpecialtyCodes()))) - .querySupervisorWhileMissMatched(getApproverEmptyHandleType(flowElement).filter(type -> Objects.equals(type, transferToAdmin)).isPresent()); + .areaCodes(getAreaFilterEnable(flowElement) ? Sets.newHashSet(ListUtils.emptyIfNull(orgDTO.getIncludeAreaCodes())) : Sets.newHashSet()) + .specialtyCodes(getSpecialtyFilterEnable(flowElement) ? Sets.newHashSet(ListUtils.emptyIfNull(orgDTO.getIncludeSpecialtyCodes())) : Sets.newHashSet()) + .querySupervisorWhileMissMatched(getApproverEmptyHandleType(flowElement).filter(type -> Objects.equals(type, transferToAdmin)).isPresent()); switch (optRange.get()) { case within_the_project: log.info("executing role v2 with within_the_project"); diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BasedPositionV2TaskAssigneeSelector.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BasedPositionV2TaskAssigneeSelector.java index 8cf9273ea..f6b1e2f17 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BasedPositionV2TaskAssigneeSelector.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BasedPositionV2TaskAssigneeSelector.java @@ -41,7 +41,9 @@ import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getApprove import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getApproverSpecifyRangeOrgLimit; import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getApproverSpecifyRangeUnit; import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getApproverSpecifyValueV2; +import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getAreaFilterEnable; import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getCooperateShipType; +import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getSpecialtyFilterEnable; /** * 基于新版配置的岗位查询审批人 @@ -73,12 +75,13 @@ public class BasedPositionV2TaskAssigneeSelector extends AbstractBpmnTaskAssigne BpmnTaskDelegateAssigner initiator = BpmnTaskDelegateAssigner.toObjectCompatible(execution.getVariables().get(INTERNAL_INITIATOR)); + ; FlowTaskAssignerV2Req.FlowTaskAssignerV2ReqBuilder v2ReqBuilder = FlowTaskAssignerV2Req.builder() .scene(FlowTaskAssignerQuerySceneEnum.BY_JOB) .jobCodes(getApproverSpecifyValue(flowElement)) .initiatorPersonId(initiator.parsePersonId()) - .areaCodes(Sets.newHashSet(ListUtils.emptyIfNull(orgDTO.getIncludeAreaCodes()))) - .specialtyCodes(Sets.newHashSet(ListUtils.emptyIfNull(orgDTO.getIncludeSpecialtyCodes()))) + .areaCodes(getAreaFilterEnable(flowElement) ? Sets.newHashSet(ListUtils.emptyIfNull(orgDTO.getIncludeAreaCodes())) : Sets.newHashSet()) + .specialtyCodes(getSpecialtyFilterEnable(flowElement) ? Sets.newHashSet(ListUtils.emptyIfNull(orgDTO.getIncludeSpecialtyCodes())) : Sets.newHashSet()) .querySupervisorWhileMissMatched(getApproverEmptyHandleType(flowElement).filter(type -> Objects.equals(type, transferToAdmin)).isPresent()); switch (optRange.get()) { case within_the_project: diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BasedRoleV2TaskAssigneeSelector.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BasedRoleV2TaskAssigneeSelector.java index 033fbd1a3..454c0eee7 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BasedRoleV2TaskAssigneeSelector.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BasedRoleV2TaskAssigneeSelector.java @@ -30,7 +30,6 @@ import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; -import static cn.axzo.workflow.common.code.FlowableEngineRespCode.ENGINE_POSITION_V2_CONFIG_INVALID; import static cn.axzo.workflow.common.code.FlowableEngineRespCode.ENGINE_ROLE_V2_CONFIG_INVALID; import static cn.axzo.workflow.common.constant.BpmnConstants.BIZ_ORG_RELATION; import static cn.axzo.workflow.common.constant.BpmnConstants.CLOSE_PROCESS_ASSIGNER; @@ -42,7 +41,9 @@ import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getApprove import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getApproverSpecifyRangeOrgLimit; import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getApproverSpecifyRangeUnit; import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getApproverSpecifyValueV2; +import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getAreaFilterEnable; import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getCooperateShipType; +import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getSpecialtyFilterEnable; /** * 基于新版配置的角色查询审批人 @@ -77,9 +78,9 @@ public class BasedRoleV2TaskAssigneeSelector extends AbstractBpmnTaskAssigneeSel .scene(FlowTaskAssignerQuerySceneEnum.BY_ROLE) .roleIds(getApproverSpecifyValue(flowElement)) .initiatorPersonId(initiator.parsePersonId()) - .areaCodes(Sets.newHashSet(ListUtils.emptyIfNull(orgDTO.getIncludeAreaCodes()))) - .specialtyCodes(Sets.newHashSet(ListUtils.emptyIfNull(orgDTO.getIncludeSpecialtyCodes()))) - .querySupervisorWhileMissMatched(getApproverEmptyHandleType(flowElement).filter(type -> Objects.equals(type, transferToAdmin)).isPresent()); + .areaCodes(getAreaFilterEnable(flowElement) ? Sets.newHashSet(ListUtils.emptyIfNull(orgDTO.getIncludeAreaCodes())) : Sets.newHashSet()) + .specialtyCodes(getSpecialtyFilterEnable(flowElement) ? Sets.newHashSet(ListUtils.emptyIfNull(orgDTO.getIncludeSpecialtyCodes())) : Sets.newHashSet()) + .querySupervisorWhileMissMatched(getApproverEmptyHandleType(flowElement).filter(type -> Objects.equals(type, transferToAdmin)).isPresent()); switch (optRange.get()) { case within_the_project: log.info("executing role v2 with within_the_project"); diff --git a/workflow-engine-server/src/main/resources/convertorXML.bpmn b/workflow-engine-server/src/main/resources/convertorXML.bpmn index 3168d2a4e..ac9993283 100644 --- a/workflow-engine-server/src/main/resources/convertorXML.bpmn +++ b/workflow-engine-server/src/main/resources/convertorXML.bpmn @@ -1,6 +1,6 @@ - + remark @@ -69,7 +69,7 @@ - + @@ -129,14 +129,16 @@ + + - + ${nrOfInstances == nrOfCompletedInstances} - + @@ -150,7 +152,7 @@ - + @@ -199,15 +201,17 @@ + + - + ${nrOfInstances == nrOfCompletedInstances} - - + + @@ -226,25 +230,25 @@ - + - + - + - + diff --git a/workflow-engine-server/src/main/resources/request.json b/workflow-engine-server/src/main/resources/request.json index 8ebd694e9..c634a802d 100644 --- a/workflow-engine-server/src/main/resources/request.json +++ b/workflow-engine-server/src/main/resources/request.json @@ -20,6 +20,8 @@ // "initiatorSpecifiedFilter": true, // "excludeIdentityTypes": ["1", "2"], // "excludeCooperateShipTypes": ["3","4"], + "areaFilterEnable":true, + "specialtyFilterEnable":true, "approvalMethod": "human", "multiMode": "AND", "sign": false, @@ -416,7 +418,7 @@ "approvalMethod": "human", "approverScope": "projectWorkspace", "approverSpecify": "position_v2", - "approverSpecifyRange": "positions_within_the_project", + "approverSpecifyRange": "within_the_project", "cooperateShipType": null, "approverSpecifyRangeOrgLimit": null, "approverSpecifyRangeUnit": null,