PROTOCOL
Workflow¶
public protocol Workflow<Rendering, Output>: AnyWorkflowConvertible
Defines a node in the workflow tree.
Initialization and Updating
A workflow node comes into existence after its parent produces
an instance of that workflow and uses it during a render pass (see the
render method for more details).
- 
If this is the first time the parent has rendered a child of this type, a new workflow node is created. The workflow passed in from the parent will be used to invoke
initialState()to obtain an initial state. - 
If the parent had previously rendered a child of this type, the existing workflow node will be updated.
workflowDidChange(from:state:)will be invoked to allow the workflow to respond to the change. 
Render
After a workflow node has been created, or any time its state changes,
a render pass occurs. The render pass takes the workflow that was passed
down from the parent along with the current state and generates a value
of type Rendering. In a common case, a workflow might render to a screen
model for display.
func render(state: State, context: RenderContext<Self>) -> MyScreenModel {
    return MyScreenModel()
}
Methods¶
makeInitialState()¶
func makeInitialState() -> State
This method is invoked once when a workflow node comes into existence.
- Returns: The initial state for the workflow.
 
workflowDidChange(from:state:)¶
func workflowDidChange(from previousWorkflow: Self, state: inout State)
Called when a new workflow is passed down from the parent to an existing workflow node.
- Parameter previousWorkflow: The workflow before the update.
 - Parameter state: The current state.
 
Parameters¶
| Name | Description | 
|---|---|
| previousWorkflow | The workflow before the update. | 
| state | The current state. | 
render(state:context:)¶
func render(state: State, context: RenderContext<Self>) -> Rendering
Called by the internal Workflow infrastructure to “render” the current state into Rendering.
A workflow’s Rendering type is commonly a view or screen model.
- Parameter state: The current state.
 - Parameter context: The workflow context is the composition point for the workflow tree. To use a nested
                     workflow, instantiate it based on the current state, then call 
rendered(in:key:outputMap:). This will return the child’sRenderingtype after creating or updating the nested workflow. 
Parameters¶
| Name | Description | 
|---|---|
| state | The current state. | 
| context | The workflow context is the composition point for the workflow tree. To use a nested workflow, instantiate it based on the current state, then call rendered(in:key:outputMap:). This will return the childβs Rendering type after creating or updating the nested workflow. |