There are two additional Start build-in Tasks available for Flows
StartFunction – starts flow when the function called somewhere:
@flow_start_func
def create_flow(activation, **kwargs):
activation.prepare()
activation.done()
return activation
class FunctionFlow(Flow):
start = flow.StartFunction(create_flow) \
.Next(this.end)
# somewhere in the code
FunctionFlow.start.run(**some_kwargs)
StartSignal – starts flow on django signal receive:
class SignalFlow(Flow):
start = flow.StartSignal(some_signal, create_flow) \
.Next(this.end)
You can check the usage for them, and rest of build-in task in this viewflow test suite.
For manually process the task state, first you should get the task from the database, activate it, and call any activation method.
task = MyFlow.task_cls.objects.get(...)
activation = task.activate()
if activation.undo.can_proceed():
activation.undo()
Any activation transition have .can_proceed()
method, helps you to check, is the task in the state that allows the transition.