public AssignmentStrategyEntry(string key, string name, IAssignmentStrategy assignmentStrategy) { this.Key = key; this.Name = name; this.AssignmentStrategy = assignmentStrategy; }
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(); }