Example #1
0
        public int CreateRequiredArticles(FArticle articleToProduce, IActorRef requestingAgent, long currentTime)
        {
            List <ArticleProvider> listAP = new List <ArticleProvider>();
            var counter = articleToProduce.Article.ArticleBoms.Count;

            foreach (var fOperation in GetOperations)
            {
                var provider = GetArticleDispoProvider(operationKey: fOperation.Key);
                if (fOperation.Operation.ArticleBoms.Count == 0)
                {
                    //TODO Log this somewhere - not in System Debug
                    //System.Diagnostics.Debug.WriteLine($"Operation {fOperation.Operation.Name} of Article {articleToProduce.Article.Name} has no RequiredArticles!");
                    fOperation.StartConditions.ArticlesProvided = true;
                }

                foreach (var bom in fOperation.Operation.ArticleBoms)
                {
                    var createdArticleProvider = new ArticleProvider(provider: ActorRefs.Nobody,
                                                                     article: bom.ToRequestItem(requestItem: articleToProduce
                                                                                                , requester: requestingAgent
                                                                                                , currentTime: currentTime));
                    listAP.Add(createdArticleProvider);
                    provider.DispoToArticleRelation.Add(createdArticleProvider);
                }
            }
            //TODO Log this somewhere
            //System.Diagnostics.Debug.WriteLine($"ProductionAgent {articleToProduce.Article.Name} require {counter} Bom elements and therefore created {listAP.Count} Dispos.");



            return(listAP.Count);
        }
Example #2
0
        public int CreateRequiredArticles(FArticle articleToProduce, IActorRef requestingAgent, long currentTime)
        {
            List <ArticleProvider> listAP = new List <ArticleProvider>();
            var remainingDuration         = articleToProduce.RemainingDuration;

            foreach (var fOperation in GetOperations.OrderByDescending(x => x.Operation.HierarchyNumber))
            {
                remainingDuration += fOperation.Operation.Duration;
                var provider = GetArticleDispoProvider(operationKey: fOperation.Key);
                if (fOperation.Operation.ArticleBoms.Count == 0)
                {
                    //TODO Log this somewhere - not in System Debug
                    //System.Diagnostics.Debug.WriteLine($"Operation {fOperation.Operation.Name} of Article {articleToProduce.Article.Name} has no RequiredArticles!");
                    fOperation.SetStartConditions(fOperation.StartConditions.PreCondition, true);
                }

                foreach (var bom in fOperation.Operation.ArticleBoms)
                {
                    var createdArticleProvider = new ArticleProvider(provider: ActorRefs.Nobody,
                                                                     article: bom.ToRequestItem(requestItem: articleToProduce
                                                                                                , requester: requestingAgent
                                                                                                , remainingDuration: remainingDuration
                                                                                                , customerDue: articleToProduce.CustomerDue
                                                                                                , currentTime: currentTime));
                    listAP.Add(createdArticleProvider);
                    provider.DispoToArticleRelation.Add(createdArticleProvider);
                }
            }
            return(listAP.Count);
        }