abstract class ProtoWorkflow[S >: Null <: GeneratedMessage] extends AbstractWorkflow[S]
Workflows are stateful components and are defined by a set of steps and transitions between them.
You can use workflows to implement business processes that span multiple services.
When implementing a workflow, you define a state type and a set of steps. Each step defines a call to be executed and the transition to the next step based on the result of the call. The workflow state can be updated after each successful step execution.
Kalix keeps track of the state of the workflow and the current step. If the workflow is stopped for any reason, it can be resumed from the last known state and step.
Workflow methods that handle incoming commands should return an AbstractWorkflow.Effect describing the next processing actions.
- S
The type of the state for this workflow.
- Annotations
- @ApiMayChange()
- Source
- ProtoWorkflow.scala
- Alphabetic
- By Inheritance
- ProtoWorkflow
- AbstractWorkflow
- AnyRef
- Any
- by any2stringadd
- by StringFormat
- by Ensuring
- by ArrowAssoc
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new ProtoWorkflow()
Abstract Value Members
- abstract def definition: AbstractWorkflow.WorkflowDef[S]
- returns
A workflow definition in a form of steps and transitions between them.
- Definition Classes
- AbstractWorkflow
- Annotations
- @ApiMayChange()
- abstract def emptyState: S
Implement by returning the initial empty state object.
Implement by returning the initial empty state object. This object will be passed into the command handlers, until a new state replaces it.
Also known as "zero state" or "neutral state".
null
is an allowed value.- Definition Classes
- AbstractWorkflow
Concrete Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- def +(other: String): String
- Implicit
- This member is added by an implicit conversion from ProtoWorkflow[S] toany2stringadd[ProtoWorkflow[S]] performed by method any2stringadd in scala.Predef.
- Definition Classes
- any2stringadd
- def ->[B](y: B): (ProtoWorkflow[S], B)
- Implicit
- This member is added by an implicit conversion from ProtoWorkflow[S] toArrowAssoc[ProtoWorkflow[S]] performed by method ArrowAssoc in scala.Predef.
- Definition Classes
- ArrowAssoc
- Annotations
- @inline()
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- def _internalSetCommandContext(context: Option[CommandContext]): Unit
INTERNAL API
INTERNAL API
- Definition Classes
- AbstractWorkflow
- def _internalSetCurrentState(state: S): Unit
INTERNAL API
INTERNAL API
- Definition Classes
- AbstractWorkflow
- def _internalSetTimerScheduler(timerScheduler: Option[TimerScheduler]): Unit
INTERNAL API
INTERNAL API
- Definition Classes
- AbstractWorkflow
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- def commandContext(): CommandContext
Additional context and metadata for a command handler.
Additional context and metadata for a command handler.
It will throw an exception if accessed from constructor.
- Attributes
- protected
- Definition Classes
- AbstractWorkflow
- def currentState(): S
Returns the state as currently stored by Kalix.
Returns the state as currently stored by Kalix.
Note that modifying the state directly will not update it in storage. To save the state, one must call
effects.updateState()
.This method can only be called when handling a command. Calling it outside a method (eg: in the constructor) will raise a IllegalStateException exception.
- Attributes
- protected
- Definition Classes
- AbstractWorkflow
- Annotations
- @ApiMayChange()
- Exceptions thrown
java.lang.IllegalStateException
if accessed outside a handler method
- def effects: Builder[S]
- Attributes
- protected
- Definition Classes
- AbstractWorkflow
- def ensuring(cond: (ProtoWorkflow[S]) => Boolean, msg: => Any): ProtoWorkflow[S]
- Implicit
- This member is added by an implicit conversion from ProtoWorkflow[S] toEnsuring[ProtoWorkflow[S]] performed by method Ensuring in scala.Predef.
- Definition Classes
- Ensuring
- def ensuring(cond: (ProtoWorkflow[S]) => Boolean): ProtoWorkflow[S]
- Implicit
- This member is added by an implicit conversion from ProtoWorkflow[S] toEnsuring[ProtoWorkflow[S]] performed by method Ensuring in scala.Predef.
- Definition Classes
- Ensuring
- def ensuring(cond: Boolean, msg: => Any): ProtoWorkflow[S]
- Implicit
- This member is added by an implicit conversion from ProtoWorkflow[S] toEnsuring[ProtoWorkflow[S]] performed by method Ensuring in scala.Predef.
- Definition Classes
- Ensuring
- def ensuring(cond: Boolean): ProtoWorkflow[S]
- Implicit
- This member is added by an implicit conversion from ProtoWorkflow[S] toEnsuring[ProtoWorkflow[S]] performed by method Ensuring in scala.Predef.
- Definition Classes
- Ensuring
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- def step(name: String): ProtoStepBuilder
Start a step definition with a given step name.
Start a step definition with a given step name.
- name
Step name.
- returns
Step builder.
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def timers: TimerScheduler
Returns a kalix.scalasdk.timer.TimerScheduler that can be used to schedule further in time.
Returns a kalix.scalasdk.timer.TimerScheduler that can be used to schedule further in time.
- Definition Classes
- AbstractWorkflow
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- def workflow: AbstractWorkflow.WorkflowDef[S]
- Definition Classes
- AbstractWorkflow
Deprecated Value Members
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable]) @Deprecated
- Deprecated
(Since version 9)
- def formatted(fmtstr: String): String
- Implicit
- This member is added by an implicit conversion from ProtoWorkflow[S] toStringFormat[ProtoWorkflow[S]] performed by method StringFormat in scala.Predef.
- Definition Classes
- StringFormat
- Annotations
- @deprecated @inline()
- Deprecated
(Since version 2.12.16) Use
formatString.format(value)
instead ofvalue.formatted(formatString)
, or use thef""
string interpolator. In Java 15 and later,formatted
resolves to the new method in String which has reversed parameters.
- def →[B](y: B): (ProtoWorkflow[S], B)
- Implicit
- This member is added by an implicit conversion from ProtoWorkflow[S] toArrowAssoc[ProtoWorkflow[S]] performed by method ArrowAssoc in scala.Predef.
- Definition Classes
- ArrowAssoc
- Annotations
- @deprecated
- Deprecated
(Since version 2.13.0) Use
->
instead. If you still wish to display it as one character, consider using a font with programming ligatures such as Fira Code.