Exemple #1
0
        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();
            }
        }
Exemple #2
0
        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();
            }
        }
        private async Task PersistWorkflow(
            Workflow workflow,
            TriggerParam triggerParam,
            DateTime?dueDate = null
            )
        {
            if (workflow == null)
            {
                throw new ArgumentNullException(nameof(workflow));
            }

            if (triggerParam.Variables != null && triggerParam.HasVariables)
            {
                foreach (var v in triggerParam.Variables)
                {
                    var variable = workflow.WorkflowVariables
                                   .FirstOrDefault(_ => _.Type == v.Key);

                    if (variable != null)
                    {
                        variable.Content = JsonConvert.SerializeObject(v.Value);
                    }
                    else
                    {
                        workflow.AddVariable(v.Value);
                    }
                }
            }

            var entityWorkflow = triggerParam.Instance as IEntityWorkflow;

            if (entityWorkflow != null)
            {
                workflow.Type     = entityWorkflow.Type;
                workflow.State    = entityWorkflow.State;
                workflow.Assignee = entityWorkflow.Assignee;
            }

            if (await WorkflowIsCompleted(triggerParam))
            {
                workflow.Completed = SystemTime.Now();
            }

            workflow.DueDate = dueDate;
        }