- #State.MathAdd(#context('$.counter.value'), 1) https://github.com/hyee/OpenCSV/blob/master/src/com/opencsv/util/NumberUtils.java
- Add Quartz retry implementation
- (Improvement) Validate State.ALL, only happens one
- (Improvement) do not always parse string to JsonDocument
- Map State - https://stackoverflow.com/questions/59260043/fork-join-on-stepfunction-map-steps-with-failures support Repayment
- add two attributes to Fail "Error": "ErrorA", // A Fail State MUST have a string field named "Error", used to provide an error name that can be used for error handling (Retry/Catch), operational, or diagnostic purposes "Cause": "Kaiju attack" // A Fail State MUST have a string field named "Cause", used to provide a human-readable message.
- Run in bulk: https://github.com/Netflix/conductor/blob/cd528e126ed36abedf38ac0eab07e18e1d476dad/core/src/main/java/com/netflix/conductor/service/WorkflowBulkServiceImpl.java
- #States.UUID()
- (Improvement) #States.arrayGetItem(#context('$.scheduleIds'), #context('$.holding.counter')) refers: https://states-language.net/spec.html#appendix-b
- Add State.ALL for Catch all exceptions (refer Appendix A: Predefined Error Codes https://states-language.net/spec.html#appendices)
- (Improvement) https://stackoverflow.com/questions/6834677/jackson-mapper-post-construct
- (Improvement) #context('$.scheduleIds') instead of #jsonPath(context, '$.scheduleIds')
- Send Auto_Transition in followUp states do not cause declined
- Pass State
- Use Yaml format
- Remove Guard from Task State
- Make Trigger State simpler (keep Next and Event fields)
- https://www.baeldung.com/java-object-validation-deserialization
- Default Choice State
- draw diagram based on state
- add global error handlers
- Non Blocking Retry
- store state
- Force guard only verify context
- build json config
- UML graph
- Build state machine
- SpelExpression
- Automate transitions
- Catch Exception
- Retry Exception https://stackoverflow.com/questions/59373799/handle-only-custom-exception-in-spring-retry https://www.baeldung.com/resilience4j
-
Parallel Branches ??
- Rewrite using Reactor
- BenchMark Spel Compilation
- Task state in Step Function does not have guard.
- Guard only used to verify the context. -> only useful on Choice Sate
Build a generic interface:
- UML supported
- D2Lang supported
- https://reactflow.dev/docs/examples/nodes/custom-node/
https://towardsdatascience.com/airflow-state-101-2be3846d4634 https://docs.aws.amazon.com/step-functions/latest/dg/sample-project-job-poller.html
flows: {
shape: sql_table
id: varchar(250) NOT NULL {constraint: primary_key}
status: SMALLINT UNSIGNED NOT NULL
flow_type_id: varchar(100) NOT NULL
case_id: varchar(250) NOT NULL {constraint: unique}
current_state: varchar(250) NOT NULL
passed_states: TEXT NULL
context: json NOT NULL
created_date: datetime NOT NULL default CURRENT_TIMESTAMP
last_updated_date: datetime NOT NULL default CURRENT_TIMESTAMP
version: SMALLINT NOT NULL DEFAULT 0
}
descrition: |md
## Notes
`composite_key`: <created_date, id, status>
**status**: <0: RUNNING, 1: COMPLETED, 2:ERROR>
|https://stackoverflow.com/questions/56263335/job-queue-with-job-affinity/56615120#56615120 lock workflow, when it is being executed, and if an event comes and see it is being executed -> reschedule by Kafka topic.
https://tanzu.vmware.com/developer/guides/spring-integration-lock/ https://github.com/spring-projects/spring-integration/blob/c28e2510917ae0a2945865017a489adc1659d19f/spring-integration-jdbc/src/main/java/org/springframework/integration/jdbc/lock/JdbcLockRegistry.java
HOLD -> TRANSFER -> [triggered] SEND SMS -> RELEASE HOLD
https://medium.com/paypal-tech/a-birds-eye-view-on-java-concurrency-frameworks-5072fd3a8759