Beispiel #1
0
        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();
        }
Beispiel #2
0
        private void ScheduleBackward(Stack <INode> rootNodes,
                                      IDirectedGraph <INode> orderOperationGraph, bool clearOldTimes)
        {
            IBackwardsScheduler backwardsScheduler =
                new BackwardScheduler(rootNodes, orderOperationGraph, clearOldTimes);

            backwardsScheduler.ScheduleBackward();
        }
Beispiel #3
0
        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();
        }