|
- {
- "Name": "simpleTestStateMachine",
- "Comment": "测试状态机定义",
- "StartState": "FirstState",
- "Version": "0.0.1",
- "States": {
- "FirstState": {
- "Type": "ServiceTask",
- "ServiceName": "is.seata.saga.DemoService",
- "ServiceMethod": "foo",
- "IsPersist": false,
- "Next": "ScriptState"
- },
- "ScriptState": {
- "Type": "ScriptTask",
- "ScriptType": "groovy",
- "ScriptContent": "return 'hello ' + inputA",
- "Input": [
- {
- "inputA": "$.data1"
- }
- ],
- "Output": {
- "scriptStateResult": "$.#root"
- },
- "Next": "ChoiceState"
- },
- "ChoiceState": {
- "Type": "Choice",
- "Choices": [
- {
- "Expression": "foo == 1",
- "Next": "FirstMatchState"
- },
- {
- "Expression": "foo == 2",
- "Next": "SecondMatchState"
- }
- ],
- "Default": "FailState"
- },
- "FirstMatchState": {
- "Type": "ServiceTask",
- "ServiceName": "is.seata.saga.DemoService",
- "ServiceMethod": "bar",
- "CompensateState": "CompensateFirst",
- "Status": {
- "return.code == 'S'": "SU",
- "return.code == 'F'": "FA",
- "$exception{java.lang.Throwable}": "UN"
- },
- "Input": [
- {
- "inputA1": "$.data1",
- "inputA2": {
- "a": "$.data2.a"
- }
- },
- {
- "inputB": "$.header"
- }
- ],
- "Output": {
- "firstMatchStateResult": "$.#root"
- },
- "Retry": [
- {
- "Exceptions": ["java.lang.Exception"],
- "IntervalSeconds": 2,
- "MaxAttempts": 3,
- "BackoffRate": 1.5
- }
- ],
- "Catch": [
- {
- "Exceptions": [
- "java.lang.Exception"
- ],
- "Next": "CompensationTrigger"
- }
- ],
- "Next": "SuccessState"
- },
- "CompensateFirst": {
- "Type": "ServiceTask",
- "ServiceName": "is.seata.saga.DemoService",
- "ServiceMethod": "compensateBar",
- "IsForCompensation": true,
- "IsForUpdate": true,
- "Input": [
- {
- "input": "$.data"
- }
- ],
- "Output": {
- "firstMatchStateResult": "$.#root"
- },
- "Status": {
- "return.code == 'S'": "SU",
- "return.code == 'F'": "FA",
- "$exception{java.lang.Throwable}": "UN"
- }
- },
- "CompensationTrigger": {
- "Type": "CompensationTrigger",
- "Next": "CompensateEndState"
- },
- "CompensateEndState": {
- "Type": "Fail",
- "ErrorCode": "StateCompensated",
- "Message": "State Compensated!"
- },
- "SecondMatchState": {
- "Type": "SubStateMachine",
- "StateMachineName": "simpleTestSubStateMachine",
- "Input": [
- {
- "input": "$.data"
- },
- {
- "header": "$.header"
- }
- ],
- "Output": {
- "firstMatchStateResult": "$.#root"
- },
- "Next": "SuccessState"
- },
- "FailState": {
- "Type": "Fail",
- "ErrorCode": "DefaultStateError",
- "Message": "No Matches!"
- },
- "SuccessState": {
- "Type": "Succeed"
- }
- }
- }
|