Exemplo n.º 1
0
 public AssignmentStrategyEntry(string key, string name,
                                IAssignmentStrategy assignmentStrategy)
 {
     this.Key  = key;
     this.Name = name;
     this.AssignmentStrategy = assignmentStrategy;
 }
Exemplo n.º 2
0
        public override void Execute(ExecutionContext executionContext)
        {
            var context     = executionContext.Context;
            var taskManager = context.TaskManager;

            var taskDef = executionContext.Node as UserTask;

            if (taskDef == null)
            {
                throw new RuntimeException("Invalid task.");
            }

            var taskName = taskDef.Name;

            if (string.IsNullOrEmpty(taskName))
            {
                taskName = taskDef.Id;
            }

            var builder = taskManager.CreateBuilder()
                          .SetToken(executionContext.Token)
                          .SetActivityId(taskDef.Id)
                          .SetName(taskName);

            var attrs = taskDef.Attributes;
            IAssignmentStrategy assignmentStrategry = null;
            var identityManager = context.IdentityManager;
            var evaluator       = executionContext.GetEvaluator();

            foreach (var attr in attrs)
            {
                var value = attr.Value;
                if (string.IsNullOrEmpty(value))
                {
                    continue;
                }

                switch (attr.Name)
                {
                case TaskPriority:     //priority
                    builder.SetPriority(short.Parse(attr.Value));
                    break;

                case TaskName:
                {
                    taskName = evaluator.Evaluate <string>(value);
                    if (taskName != null)
                    {
                        builder.SetName(taskName);
                    }
                    break;
                }

                case Assignee:
                    string userId = evaluator.Evaluate <string>(value);
                    builder.SetAssignee(userId);
                    break;

                case AssignmentStrategy:
                    assignmentStrategry = taskManager.GetAssignmentStrategy(value);
                    break;
                }
            }

            if (assignmentStrategry != null)
            {
                assignmentStrategry.ExecuteAsync(builder);
            }

            builder.Build();
        }