Java 如何将Camunda业务错误排除在外?
我关于抛出业务错误的问题。例如,我有一些图表,我从SpringREST控制器的方法开始这个过程。 如何在test()方法中捕获“Error CheckNoneAZNOperationIsExist”并将其抛出Java 如何将Camunda业务错误排除在外?,java,spring-boot,bpmn,camunda,Java,Spring Boot,Bpmn,Camunda,我关于抛出业务错误的问题。例如,我有一些图表,我从SpringREST控制器的方法开始这个过程。 如何在test()方法中捕获“Error CheckNoneAZNOperationIsExist”并将其抛出 @RestController 公共类测试点{ @自动连线 进程引擎进程引擎; @GetMapping(path=“帐户关闭”) 公共字符串测试(){ ProcessInstance ProcessInstance=processEngine.getRuntimeService().st
@RestController
公共类测试点{
@自动连线
进程引擎进程引擎;
@GetMapping(path=“帐户关闭”)
公共字符串测试(){
ProcessInstance ProcessInstance=processEngine.getRuntimeService().startProcessInstanceByKey(“帐户\关闭\流”);
返回“hi”;
}
}
最后,我想在发生“错误结束事件”时向使用者抛出一个异常,例如JSON
{
“errorMessage”: “CheckNoneAZNOperationIsExist”,
“errorCode”: 123
}
最后,我找到了解决办法 1) 我将错误代码变量(例如globalError)添加到所有边界事件中 2) 执行流程后,我检查历史变量实例(Camunda Java API)
@RestController
公共类测试点{
@自动连线
进程引擎进程引擎;
@GetMapping(path=“x”)
公共字符串测试(){
ProcessInstance ProcessInstance=processEngine.getRuntimeService().startProcessInstanceByKey(“帐户\关闭\流”);
HistoricVariableInstanceEntity变量=(HistoricVariableInstanceEntity)processEngine.getHistoryService()
.createHistoricVariableInstanceQuery()
.processInstanceId(processInstance.getId())
.variableName(“全局错误”).singleResult();
if(变量!=null)
抛出新的ResponseStatusException(HttpStatus.BAD_请求,processInstance.getId()+“”+variable.getTextValue());
返回“hi”;
}
}
3) 发生错误时,全局错误由Camunda引擎填写“错误名称”
上述代码的结果
{
"timestamp": "2019-08-18T10:34:49.928+0000",
"status": 400,
"error": "Bad Request",
"message": "ce72ca30-c1a3-11e9-bb0b-0a0027000005 ErrorUserIsFrozen",
"path": "/x"
}
最后,我找到了解决办法 1) 我将错误代码变量(例如globalError)添加到所有边界事件中 2) 执行流程后,我检查历史变量实例(Camunda Java API)
@RestController
公共类测试点{
@自动连线
进程引擎进程引擎;
@GetMapping(path=“x”)
公共字符串测试(){
ProcessInstance ProcessInstance=processEngine.getRuntimeService().startProcessInstanceByKey(“帐户\关闭\流”);
HistoricVariableInstanceEntity变量=(HistoricVariableInstanceEntity)processEngine.getHistoryService()
.createHistoricVariableInstanceQuery()
.processInstanceId(processInstance.getId())
.variableName(“全局错误”).singleResult();
if(变量!=null)
抛出新的ResponseStatusException(HttpStatus.BAD_请求,processInstance.getId()+“”+variable.getTextValue());
返回“hi”;
}
}
3) 发生错误时,全局错误由Camunda引擎填写“错误名称”
上述代码的结果
{
"timestamp": "2019-08-18T10:34:49.928+0000",
"status": 400,
"error": "Bad Request",
"message": "ce72ca30-c1a3-11e9-bb0b-0a0027000005 ErrorUserIsFrozen",
"path": "/x"
}
一旦历史记录增加,依赖历史查询将成为性能问题。检查“executeWithVariablesInReturn”是否是解决问题的更好解决方案:完美!感谢您在历史记录增长后,历史记录查询将成为性能问题。检查“executeWithVariablesInReturn”是否是解决问题的更好解决方案:完美!非常感谢。