Fix Migrations

This commit is contained in:
Ram Narayan Balaji 2025-09-25 02:21:36 +05:30
parent 25c8abb729
commit 7bf3668dd9

View File

@ -439,19 +439,19 @@ public class MigrationUtil {
WorkflowNodeDefinitionInterface versionCheckNode = WorkflowNodeDefinitionInterface versionCheckNode =
JsonUtils.readValue( JsonUtils.readValue(
""" """
{ {
"type": "automatedTask", "type": "automatedTask",
"subType": "checkEntityAttributesTask", "subType": "checkEntityAttributesTask",
"name": "CheckIfGlossaryTermIsNew", "name": "CheckIfGlossaryTermIsNew",
"displayName": "Check if Glossary Term is New", "displayName": "Check if Glossary Term is New",
"config": { "config": {
"rules": "{\\"==\\":[{\\"var\\":\\"version\\"},0.1]}" "rules": "{\\"==\\":[{\\"var\\":\\"version\\"},0.1]}"
}, },
"inputNamespaceMap": { "inputNamespaceMap": {
"relatedEntity": "global" "relatedEntity": "global"
} }
} }
""", """,
WorkflowNodeDefinitionInterface.class); WorkflowNodeDefinitionInterface.class);
nodes.add(versionCheckNode); nodes.add(versionCheckNode);
LOG.info("Added new node: CheckIfGlossaryTermIsNew"); LOG.info("Added new node: CheckIfGlossaryTermIsNew");
@ -468,20 +468,21 @@ public class MigrationUtil {
WorkflowNodeDefinitionInterface inReviewUpdateNode = WorkflowNodeDefinitionInterface inReviewUpdateNode =
JsonUtils.readValue( JsonUtils.readValue(
""" """
{ {
"type": "automatedTask", "type": "automatedTask",
"subType": "setGlossaryTermStatusTask", "subType": "setEntityAttributeTask",
"name": "SetGlossaryTermStatusToInReviewForUpdate", "name": "SetGlossaryTermStatusToInReviewForUpdate",
"displayName": "Set Status to 'In Review' (Update)", "displayName": "Set Status to 'In Review' (Update)",
"config": { "config": {
"glossaryTermStatus": "In Review" "fieldName": "status",
}, "fieldValue": "In Review"
"inputNamespaceMap": { },
"relatedEntity": "global", "inputNamespaceMap": {
"updatedBy": "global" "relatedEntity": "global",
} "updatedBy": "global"
} }
""", }
""",
WorkflowNodeDefinitionInterface.class); WorkflowNodeDefinitionInterface.class);
nodes.add(inReviewUpdateNode); nodes.add(inReviewUpdateNode);
LOG.info("Added new node: SetGlossaryTermStatusToInReviewForUpdate"); LOG.info("Added new node: SetGlossaryTermStatusToInReviewForUpdate");
@ -497,28 +498,27 @@ public class MigrationUtil {
WorkflowNodeDefinitionInterface unifiedApprovalNode = WorkflowNodeDefinitionInterface unifiedApprovalNode =
JsonUtils.readValue( JsonUtils.readValue(
""" """
{ {
"type": "userTask", "type": "userTask",
"subType": "userApprovalTask", "subType": "userApprovalTask",
"name": "ApprovalForUpdates", "name": "ApprovalForUpdates",
"displayName": "Review Changes for Updates", "displayName": "Review Changes for Updates",
"config": { "config": {
"assignees": { "assignees": {
"addReviewers": true "addReviewers": true
}, },
"approvalThreshold": 1, "approvalThreshold": 1,
"rejectionThreshold": 1, "rejectionThreshold": 1
"supportsSuggestions": true },
}, "inputNamespaceMap": {
"inputNamespaceMap": { "relatedEntity": "global"
"relatedEntity": "global" },
}, "output": ["updatedBy"]
"output": ["updatedBy"] }
} """,
""",
WorkflowNodeDefinitionInterface.class); WorkflowNodeDefinitionInterface.class);
nodes.add(unifiedApprovalNode); nodes.add(unifiedApprovalNode);
LOG.info("Added new node: ApprovalForUpdates (unified task with suggestions)"); LOG.info("Added new node: ApprovalForUpdates");
nodesAdded = true; nodesAdded = true;
} catch (Exception e) { } catch (Exception e) {
LOG.error("Failed to add ApprovalForUpdates node", e); LOG.error("Failed to add ApprovalForUpdates node", e);
@ -531,18 +531,18 @@ public class MigrationUtil {
WorkflowNodeDefinitionInterface rollbackNode = WorkflowNodeDefinitionInterface rollbackNode =
JsonUtils.readValue( JsonUtils.readValue(
""" """
{ {
"type": "automatedTask", "type": "automatedTask",
"subType": "rollbackEntityTask", "subType": "rollbackEntityTask",
"name": "RollbackGlossaryTermChanges", "name": "RollbackGlossaryTermChanges",
"displayName": "Rollback Glossary Term Changes", "displayName": "Rollback Glossary Term Changes",
"config": {}, "config": {},
"inputNamespaceMap": { "inputNamespaceMap": {
"relatedEntity": "global", "relatedEntity": "global",
"updatedBy": "ApprovalForUpdates" "updatedBy": "ApprovalForUpdates"
} }
} }
""", """,
WorkflowNodeDefinitionInterface.class); WorkflowNodeDefinitionInterface.class);
nodes.add(rollbackNode); nodes.add(rollbackNode);
LOG.info("Added new node: RollbackGlossaryTermChanges"); LOG.info("Added new node: RollbackGlossaryTermChanges");
@ -559,20 +559,21 @@ public class MigrationUtil {
WorkflowNodeDefinitionInterface approvedDetailedNode = WorkflowNodeDefinitionInterface approvedDetailedNode =
JsonUtils.readValue( JsonUtils.readValue(
""" """
{ {
"type": "automatedTask", "type": "automatedTask",
"subType": "setGlossaryTermStatusTask", "subType": "setEntityAttributeTask",
"name": "SetGlossaryTermStatusToApprovedAfterReview", "name": "SetGlossaryTermStatusToApprovedAfterReview",
"displayName": "Set Status to 'Approved' (After Review)", "displayName": "Set Status to 'Approved' (After Review)",
"config": { "config": {
"glossaryTermStatus": "Approved" "fieldName": "status",
}, "fieldValue": "Approved"
"inputNamespaceMap": { },
"relatedEntity": "global", "inputNamespaceMap": {
"updatedBy": "ApprovalForUpdates" "relatedEntity": "global",
} "updatedBy": "ApprovalForUpdates"
} }
""", }
""",
WorkflowNodeDefinitionInterface.class); WorkflowNodeDefinitionInterface.class);
nodes.add(approvedDetailedNode); nodes.add(approvedDetailedNode);
LOG.info("Added new node: SetGlossaryTermStatusToApprovedAfterReview"); LOG.info("Added new node: SetGlossaryTermStatusToApprovedAfterReview");
@ -588,13 +589,13 @@ public class MigrationUtil {
WorkflowNodeDefinitionInterface rollbackEndNode = WorkflowNodeDefinitionInterface rollbackEndNode =
JsonUtils.readValue( JsonUtils.readValue(
""" """
{ {
"type": "endEvent", "type": "endEvent",
"subType": "endEvent", "subType": "endEvent",
"name": "RollbackEnd", "name": "RollbackEnd",
"displayName": "Changes Rolled Back" "displayName": "Changes Rolled Back"
} }
""", """,
WorkflowNodeDefinitionInterface.class); WorkflowNodeDefinitionInterface.class);
nodes.add(rollbackEndNode); nodes.add(rollbackEndNode);
LOG.info("Added new node: RollbackEnd"); LOG.info("Added new node: RollbackEnd");
@ -610,13 +611,13 @@ public class MigrationUtil {
WorkflowNodeDefinitionInterface changeReviewEndNode = WorkflowNodeDefinitionInterface changeReviewEndNode =
JsonUtils.readValue( JsonUtils.readValue(
""" """
{ {
"type": "endEvent", "type": "endEvent",
"subType": "endEvent", "subType": "endEvent",
"name": "ChangeReviewEnd", "name": "ChangeReviewEnd",
"displayName": "Approved After Change Review" "displayName": "Approved After Change Review"
} }
""", """,
WorkflowNodeDefinitionInterface.class); WorkflowNodeDefinitionInterface.class);
nodes.add(changeReviewEndNode); nodes.add(changeReviewEndNode);
LOG.info("Added new node: ChangeReviewEnd"); LOG.info("Added new node: ChangeReviewEnd");
@ -837,15 +838,17 @@ public class MigrationUtil {
boolean triggerModified = false; boolean triggerModified = false;
// Check if there's an entityType field (old format) // Check if there's an entityType field (old format)
if (configObj.has("entityType") && !configObj.has("entityTypes")) { if (configObj.has("entityType")) {
String entityType = configObj.get("entityType").asText(); String entityType = configObj.get("entityType").asText();
configObj.remove("entityType");
// Create entityTypes array with the single value // Create entityTypes array with the single value
ArrayNode entityTypesArray = mapper.createArrayNode(); ArrayNode entityTypesArray = mapper.createArrayNode();
entityTypesArray.add(entityType); entityTypesArray.add(entityType);
configObj.set("entityTypes", entityTypesArray); configObj.set("entityTypes", entityTypesArray);
// Remove the old entityType field
configObj.remove("entityType");
LOG.info( LOG.info(
"Updated trigger from entityType='{}' to entityTypes=['{}']", "Updated trigger from entityType='{}' to entityTypes=['{}']",
entityType, entityType,