Overview
This is a way for workflow authors to control the workflows users can apply to their content.
The example uses three active workflows in a space
- a Workflow Selector workflow that is applied to content in a space by default
- two workflows each with a label filter
This makes it easier for users to select the workflow to apply to a page without giving users the ability to customize the workflow.
Workflow Selector workflow
The workflow applied by default to new content has an initial state that allows a user to select one of two workflows by choosing an appropriate state.
There are two triggers each listening for a statechanged
event.
- the first trigger listens for the state change to the Project One state
- the second trigger listens for the state change to the Project Two state
Each trigger
- adds a label to the content that is used to filter the workflow applied to the page
- sets a state in the content filter workflow
The addition of the label causes the application of the appropriate label filter workflow.
{workflow:name=Workflow Selector} {state:Select State for Workflow} {state} {state:Project One} {state} {state:Project Two} {state} {trigger:statechanged|state=Project One} {set-label:projectone} {set-state:Draft Project One} {trigger} {trigger:statechanged|state=Project Two} {set-label:projecttwo} {set-state:Draft Project Two} {trigger} {workflow}
Project One workflow
The second workflow, Project One has a content filter projectone
. This workflow adds the label as a stickylabels
. Adding stickylabels=true
prevents labels from being removed except by a user with admin permission.
{workflow:name=Project One Workflow|label=projectone|stickylabels=projectone} {state:Draft Project One} {state} {state:Cheese} {state} {state:Bacon} {state} {workflow}
Project Two workflow
The third workflow, Project Two has a content filter projecttwo
. This workflow also adds the label as a stickylabels
.
{workflow:name=Project Two Workflow|label=projecttwo|stickylabels=projecttwo} {state:Draft Project Two} {state} {state:Jam} {state} {state:Donut} {state} {workflow}
How it works
When you create a new page the Workflow Selector workflow is enabled and applied to the content.
Select a destination state in the workflow popup.
Choosing the Project One state will initiate the following trigger actions
- setting the content label as
projectone
- set the state to the Draft Project One state
The addition of the projectone
label to the page will apply the Project One workflow.
Choosing the Project Two state will cause the addition of the projecttwo
label.
The state is set to the Draft Project Two and the Project Two workflow is applied.
Note that the initial states set in each content filter workflows can use the same name. States only need to be uniquely named in the same workflow.