}
}
}
+ },
+ "uat-unhandled-error" : {
+ "steps" : {
+ "execute-A" : {
+ "target" : "execute-script-1",
+ "on_success" : [ "finalize" ],
+ "on_failure" : [ "clean-up" ]
+ },
+ "finalize" : {
+ "target" : "execute-script-3"
+ },
+ "clean-up" : {
+ "target" : "execute-script-4"
+ }
+ },
+ "inputs" : {
+ "service-instance-id" : {
+ "type" : "string"
+ },
+ "failing-steps" : {
+ "type" : "json"
+ }
+ },
+ "outputs" : {}
}
},
"node_templates" : {
execute-script-1: FAILED
execute-script-2: FAILED
execute-script-3: null
- execute-script-4: SUCCEEDED
\ No newline at end of file
+ execute-script-4: SUCCEEDED
+
+ - name: uat-unhandled-error
+ request:
+ commonHeader: &ch
+ originatorId: sdnc
+ requestId: "1234"
+ subRequestId: "1234-12234"
+ actionIdentifiers: &ai
+ blueprintName: uat-imperative-workflow
+ blueprintVersion: "1.0.0"
+ actionName: uat-unhandled-error
+ mode: sync
+ payload:
+ uat-unhandled-error-request:
+ failing-steps:
+ execute-A: true
+ clean-up: true
+ expectedResponse:
+ commonHeader: *ch
+ actionIdentifiers: *ai
+ status:
+ code: 500
+ eventType: EVENT_COMPONENT_FAILURE
+ errorMessage: "Step failed: execute-A, Step failed: clean-up, node(clean-up) outgoing edge(FAILURE) is missing."
+ message: failure
\ No newline at end of file
}
val response = client.execute(request) { response ->
val statusLine = response.statusLine
- assertThat("${process.name}", statusLine.statusCode, equalTo(HttpStatus.SC_OK))
+ val expectedCode = expectedResponse?.get("status")?.get("code")?.intValue()
+ assertThat("${process.name}", statusLine.statusCode, equalTo(expectedCode ?: HttpStatus.SC_OK))
val entity = response.entity
assertThat("${process.name} Response contains no content", entity, notNullValue())
entity.content.bufferedReader().use { it.readText() }
fun allErrors(): List<String> = errors.values.flatten()
fun stepErrors(stepName: String): MutableList<String>? = errors[stepName]
+
+ fun clearAll() = errors.clear();
}
}
message = BluePrintConstants.STATUS_FAILURE
} else {
+ bluePrintRuntimeService.getBluePrintError().clearAll()
message = BluePrintConstants.STATUS_SUCCESS
}
eventType = EventType.EVENT_COMPONENT_EXECUTED.name
.executeNodeTemplate(bluePrintRuntimeService, node.id, nodeTemplateName, nodeInput)
if (executionServiceOutput.status.message == BluePrintConstants.STATUS_FAILURE) {
- // Clear step errors so that the workflow does not fail
- bluePrintRuntimeService.getBluePrintError().stepErrors(node.id)?.clear()
return EdgeLabel.FAILURE
}