executeWorkflow static method

void executeWorkflow(
  1. BuildContext context,
  2. WorkflowActionModel action, {
  3. FinaliseWorkflow? finaliseWorkflow,
})

Implementation

static void executeWorkflow(BuildContext context, WorkflowActionModel action,
    {FinaliseWorkflow? finaliseWorkflow}) {
  var app = action.app;
  var accessState = AccessBloc.getState(context);
  if (accessState is AccessDetermined) {
    var workflowModel = action.workflow!;
    var member = accessState.getMember();
    if (member != null) {
      var memberId = member.documentID;
      if ((workflowModel.workflowTask != null) &&
          (workflowModel.workflowTask!.isNotEmpty)) {
        var firstWorkflowTask = workflowModel.workflowTask![0];
        var firstTask = firstWorkflowTask.task!;
        var assignment = AssignmentModel(
          documentID: newRandomKey(),
          appId: app.documentID,
          reporterId: accessState.getMember()!.documentID,
          assigneeId: memberId,
          task: firstTask,
          workflow: workflowModel,
          timestamp: null,
          triggeredById: null,
          workflowTaskSeqNumber: firstWorkflowTask.seqNumber,
          resultsPrevious: null,
          confirmMessage: firstWorkflowTask.confirmMessage,
          rejectMessage: firstWorkflowTask.rejectMessage,
          status: AssignmentStatus.open,
        );
        firstTask.callExecute(app, context, memberId, assignment, true,
            finaliseWorkflow: finaliseWorkflow);
      } else {
        throw Exception("No tasks in workflow");
      }
    } else {
      throw Exception("No member logged on. Can't execute workflow");
    }
  } else {
    throw Exception(
        "AccessState is not AccessDetermined. Can't execute workflow");
  }
}