Exemple #1
0
        /// <summary>
        /// 侦听任务执行完成时接收通知处理
        /// </summary>
        /// <param name="execution"></param>
        public void Notify(IExecutionEntity execution)
        {
            UserTask task = execution.CurrentFlowElement as UserTask;

            if (task.ExtensionElements.TryGetValue(BpmnXMLConstants.ELEMENT_EXTENSIONS_PROPERTY, out IList <ExtensionElement> exts))
            {
                if (bool.TryParse(exts.GetAttributeValue(BpmnXMLConstants.ACTIITI_RUNTIME_ASSIGNEE), out bool result) == false || result == false)
                {
                    return;
                }

                var variable = execution.GetVariableInstance(BpmnXMLConstants.RUNTIME_ASSIGNEE_USER_VARIABLE_NAME);

                RuntimeAssigneeUser user = JToken.FromObject(variable.Value).ToObject <RuntimeAssigneeUser>();

                if ((user?.Users?.Count()).GetValueOrDefault() == 0)
                {
                    return;
                }

                string collection   = task.LoopCharacteristics.GetCollectionVarName();
                string elemVariable = task.LoopCharacteristics.ElementVariable;

                execution.RemoveVariableLocal(collection);
                execution.RemoveVariableLocal(elemVariable);
            }
        }
Exemple #2
0
        /// <summary>
        /// 侦听接收通知处理
        /// </summary>
        /// <param name="execution"></param>
        public void Notify(IExecutionEntity execution)
        {
            UserTask task = execution.CurrentFlowElement as UserTask;

            if (task.ExtensionElements.TryGetValue(BpmnXMLConstants.ELEMENT_EXTENSIONS_PROPERTY, out IList <ExtensionElement> exts))
            {
                if (bool.TryParse(exts.GetAttributeValue(BpmnXMLConstants.ACTIITI_RUNTIME_ASSIGNEE), out bool result) == false || result == false)
                {
                    return;
                }

                var variable = execution.GetVariableInstance(BpmnXMLConstants.RUNTIME_ASSIGNEE_USER_VARIABLE_NAME);

                RuntimeAssigneeUser user = JToken.FromObject(variable.Value).ToObject <RuntimeAssigneeUser>();

                if ((user?.Users?.Count()).GetValueOrDefault() == 0)
                {
                    throw new NotFoundAssigneeException();
                }

                var varName = exts.GetAttributeValue(BpmnXMLConstants.ACTIITI_RUNTIME_ASSIGNEE_VARIABLE);

                if (string.IsNullOrWhiteSpace(varName))
                {
                    varName = user.Field;
                }

                execution.SetLoopVariable(varName, user.Users.Distinct().ToArray());
            }
        }
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="taskId">任务id</param>
 /// <param name="outputVariables">提交的数据</param>
 /// <param name="runtimeAssignUser">如果下一步需要从当前任务中指定人员处理,则使用这个参数</param>
 ////[JsonConstructor]
 public CompleteTaskCmd([JsonProperty("TaskId")] string taskId,
                        [JsonProperty("OutputVariables")] WorkflowVariable outputVariables,
                        [JsonProperty("RuntimeAssignUsers")] RuntimeAssigneeUser runtimeAssignUser)
 {
     this.taskId              = taskId;
     this.outputVariables     = outputVariables;
     this.RuntimeAssigneeUser = runtimeAssignUser;
 }