private async Task PersistWorkflow( Workflow workflow, TriggerParam param, TriggerResult result ) { if (workflow == null) { throw new ArgumentNullException(nameof(workflow)); } // persisting workflow variables if (param.HasVariables) { foreach (var v in param.Variables) { var variable = workflow.WorkflowVariables .FirstOrDefault(variables => variables.Type == v.Key); if (variable != null) { variable.Content = JsonConvert.SerializeObject(v.Value); } else { workflow.AddVariable(v.Value); } } } // keeping workflow entity nsync var entity = param.Instance as IWorkflowInstanceEntity; var assignableEntity = param.Instance as IAssignableWorkflow; if (entity != null) { workflow.Type = entity.Type; workflow.Assignee = assignableEntity.Assignee; workflow.AddHistoryItem(workflow.State, entity.State, this.userContext.UserName); workflow.State = entity.State; } // treating AutoTrigger if (result.HasAutoTrigger) { this.repository.AddAutoTrigger(result.AutoTrigger, entity); } if (await this.WorkflowIsCompleted(param)) { workflow.Completed = SystemTime.Now(); } }
private async Task PersistWorkflow(Workflow workflow, TriggerParam triggerParam) { if (workflow == null) { throw new ArgumentNullException(nameof(workflow)); } // persisting workflow variables if (triggerParam.HasVariables) { foreach (var v in triggerParam.Variables) { var variable = workflow.WorkflowVariables .FirstOrDefault(variables => variables.Type == v.Key); if (variable != null) { variable.Content = JsonConvert.SerializeObject(v.Value); } else { workflow.AddVariable(v.Value); } } } // keeping workflow entity nsync var entityWorkflow = triggerParam.Instance as IEntityWorkflow; if (entityWorkflow != null) { #region Fix _context.Entry(entityWorkflow).State = EntityState.Modified; #endregion Fix workflow.Type = entityWorkflow.Type; workflow.Assignee = entityWorkflow.Assignee; workflow.AddHistoryItem(workflow.State, entityWorkflow.State, _userContext.UserName); workflow.State = entityWorkflow.State; } if (await WorkflowIsCompleted(triggerParam)) { workflow.Completed = SystemTime.Now(); } }