@Override
public void cancel(CoreSession session, DocumentRouteElement element) {
GraphRoute graph = element instanceof GraphRoute ? (GraphRoute) element : null;
Map<String, Serializable> eventProperties = new HashMap<>();
if (graph != null) {
eventProperties.put("modelId", graph.getModelId());
eventProperties.put("modelName", graph.getModelName());
eventProperties.put(RoutingAuditHelper.WORKFLOW_VARIABLES, (Serializable) graph.getVariables());
eventProperties.put(RoutingAuditHelper.WORKFLOW_INITATIOR, graph.getInitiator());
List<String> pendingNodeNames = new ArrayList<>();
for (GraphNode suspendedNode : graph.getSuspendedNodes()) {
pendingNodeNames.add(suspendedNode.getId());
}
eventProperties.put("pendingNodes", (Serializable) pendingNodeNames);
}
EventFirer.fireEvent(session, element, eventProperties, DocumentRoutingConstants.Events.beforeWorkflowCanceled.name());
super.cancel(session, element);
if (graph == null) {
return;
}
for (GraphNode node : graph.getNodes()) {
node.cancelTasks();
node.cancelSubRoute();
}
}