private void ScheduleBackwardSecond(IDirectedGraph <INode> orderOperationGraph) { INodes childRootNodes = new Nodes(); foreach (var rootNode in orderOperationGraph.GetRootNodes()) { if (rootNode.GetEntity().GetType() != typeof(CustomerOrderPart)) { continue; } Providers childProviders = ZppConfiguration.CacheManager.GetAggregator() .GetAllChildProvidersOf((Demand)rootNode.GetEntity()); if (childProviders == null || childProviders.Count() > 1) { throw new MrpRunException( "After Mrp1 a CustomerOrderPart MUST have exact one child."); } childRootNodes.AddAll(childProviders.ToNodes()); } IBackwardsScheduler backwardsScheduler = new BackwardScheduler(childRootNodes.ToStack(), orderOperationGraph, false); backwardsScheduler.ScheduleBackward(); }
private void ScheduleBackward(Stack <INode> rootNodes, IDirectedGraph <INode> orderOperationGraph, bool clearOldTimes) { IBackwardsScheduler backwardsScheduler = new BackwardScheduler(rootNodes, orderOperationGraph, clearOldTimes); backwardsScheduler.ScheduleBackward(); }
private void ScheduleBackwardFirst(IDirectedGraph <INode> orderOperationGraph) { INodes rootNodes = new Nodes(); foreach (var rootNode in orderOperationGraph.GetRootNodes()) { if (rootNode.GetEntity().GetType() == typeof(CustomerOrderPart)) { rootNodes.Add(rootNode); } } IBackwardsScheduler backwardsScheduler = new BackwardScheduler(rootNodes.ToStack(), orderOperationGraph, true); backwardsScheduler.ScheduleBackward(); }