- Must be deterministic.
- Control flow logic:
- Programming language constructs
- Iteration
- Data-based decisions
- Data types
- Error Handling
- Retries
- Compensation(SAGA)
- Sync/Async
- Sub-workflow
- Queries
- Signals
- ...
- Programming language constructs
- Can be non-deterministic.
- Interact with "outside" world.
- Orchestrated with workflow functions.
- Can be async.
- Can contain any code, without restrictions.
- Must be idempotent.
- Fault Tolerant.
- Transactional.
- Stateful.
- Scalable.
- Support observability providers:
- Grafana
- OpenTracing
- ElasticSearch