/// <summary> /// 检查触发器是否达到了触发条件 /// </summary> /// <param name="ivtask"></param> /// <param name="trigger"></param> /// <returns></returns> private bool CheckTriggerConditions(TaskDefinition task, TaskTrigger trigger) { logger.DebugFormat("开始检查{0}的输出触发器", task.Name); IDictionary properties; if (!this.taskProperties.TryGetValue(task.ID, out properties)) { logger.DebugFormat("流程{0}的{1}触发器失败", task.Name, trigger.Name); return(false); } if (!properties.Contains(trigger.Property)) { logger.DebugFormat("流程{0}的{1}触发条件触发失败, PropertyKey不存在:{2}", task.Name, trigger.Name, trigger.Property); return(false); } // TODO: 根据不同的值类型做不同的判断,比如int,枚举 if (properties[trigger.Property].ToString() != trigger.Value.ToString()) { logger.DebugFormat("流程{0}的{1}触发条件触发失败, PropertyValue不同:{2}", task.Name, trigger.Name, properties[trigger.Property]); return(false); } return(true); }
/// <summary> /// 执行指定的触发器 /// </summary> /// <param name="trigger">要执行的触发器</param> /// <returns>返回触发器执行是否成功</returns> private bool ExecuteTriggerFinal(TaskTrigger trigger) { foreach (TaskDefinition task in trigger.TaskList) { // 触发器触发的Task也执行重试逻辑 bool ret = DelegateUtility.ContinuousInvoke <TaskDefinition>(this.ExecuteTask, task, task.RetryTimes); if (!ret) { // 执行失败, return(false); } else { // 执行成功,继续执行下一个 } } return(true); }