コード例 #1
0
 /// <summary>
 /// Resetting all progress of handling events
 /// </summary>
 /// <returns>true value if successful resetted</returns>
 public bool reset()
 {
     if (!IsAllowActions)
     {
         return(false);
     }
     projects.Clear();
     current = new ExecutionOrder();
     Status._.flush();
     return(true);
 }
コード例 #2
0
        /// <summary>
        /// Checking state with current range of order.
        ///
        /// In general, this checking for multiple the event-action like a EW/OWP:
        ///   * Before1 -> After1|Cancel
        ///   * After1  -> POST/Cancel
        /// </summary>
        /// <param name="evt"></param>
        /// <param name="incoming">Current incoming project</param>
        /// <returns>true value if it's allowed to execute for current state</returns>
        protected bool isExecute(ISolutionEvent evt, IExecutionOrder incoming)
        {
            if (!hasExecutionOrder(evt))
            {
                return(true);
            }
            Log.Debug("hasExecutionOrder(->isExecute) for '{0}' is true", evt.Caption);

            foreach (IExecutionOrder eo in evt.ExecutionOrder)
            {
                if (!projects.ContainsKey(eo.Project))
                {
                    continue;
                }

                // The 'Before' base:
                if (eo.Order == ExecutionOrderType.Before)
                {
                    // Before1 -> After1
                    return(projects[eo.Project].Order == ExecutionOrderType.Before);
                }

                // The 'After' base:
                if (projects[eo.Project].Order != ExecutionOrderType.After)
                {
                    return(false); // waiting for 'After' state..
                }

                if (incoming.Project != eo.Project)
                {
                    return(true);                                   // After1  -> POST/Cancel
                }
                return(incoming.Order == ExecutionOrderType.After); // 'After' is reached ?
            }
            return(false);
        }
コード例 #3
0
        /// <summary>
        /// Checking state with current range of order.
        /// 
        /// In general, this checking for multiple the event-action like a EW/OWP:
        ///   * Before1 -> After1|Cancel
        ///   * After1  -> POST/Cancel
        /// </summary>
        /// <param name="evt"></param>
        /// <param name="incoming">Current incoming project</param>
        /// <returns>true value if it's allowed to execute for current state</returns>
        protected bool isExecute(ISolutionEvent evt, IExecutionOrder incoming)
        {
            if(!hasExecutionOrder(evt)) {
                return true;
            }
            Log.Debug("hasExecutionOrder(->isExecute) for '{0}' is true", evt.Caption);

            foreach(IExecutionOrder eo in evt.ExecutionOrder)
            {
                if(!projects.ContainsKey(eo.Project)) {
                    continue;
                }

                // The 'Before' base:
                if(eo.Order == ExecutionOrderType.Before)
                {
                    // Before1 -> After1
                    return (projects[eo.Project] == ExecutionOrderType.Before);
                }

                // The 'After' base:
                if(projects[eo.Project] != ExecutionOrderType.After) {
                    return false; // waiting for 'After' state..
                }

                if(incoming.Project != eo.Project) {
                    return true; // After1  -> POST/Cancel
                }
                return (incoming.Order == ExecutionOrderType.After); // 'After' is reached ?
            }
            return false;
        }
コード例 #4
0
 /// <summary>
 /// Resetting all progress of handling events
 /// </summary>
 /// <returns>true value if successful resetted</returns>
 public bool reset()
 {
     if(!IsAllowActions) {
         return false;
     }
     projects.Clear();
     current = new ExecutionOrder();
     Status._.flush();
     return true;
 }