private void CreateContractAgent(T_CustomerOrderPart orderPart) { _orderQueue.Enqueue(item: orderPart); DebugMessage(msg: $"Creating Contract Agent for order {orderPart.CustomerOrderId} with {orderPart.Article.Name} DueTime {orderPart.CustomerOrder.DueTime}"); var agentSetup = AgentSetup.Create(agent: this, behaviour: ContractAgent.Behaviour.Factory.Get(simType: _simulationType)); var instruction = CreateChild.Create(setup: agentSetup , target: ActorPaths.Guardians .Single(predicate: x => x.Key == GuardianType.Contract) .Value , source: this.Self); Send(instruction: instruction); }
internal void ResponseFromSystemForBom(M_Article article) { // Update var dueTime = _fArticle.DueTime; if (article.Operations != null) { dueTime = _fArticle.DueTime - article.Operations.Sum(selector: x => x.Duration + x.AverageTransitionDuration); } // TODO: Object that handles the different operations- current assumption is all operations are handled as a sequence (no alternative/parallel plans) _fArticle = _fArticle.UpdateCustomerOrderAndDue(id: _fArticle.CustomerOrderId, due: dueTime, storage: _fArticle.StorageAgent) .UpdateArticle(article: article); // Creates a Production Agent for each element that has to be produced for (var i = 0; i < _quantityToProduce; i++) { var agentSetup = AgentSetup.Create(agent: Agent, behaviour: ProductionAgent.Behaviour.Factory.Get(simType: SimulationType.None)); var instruction = CreateChild.Create(setup: agentSetup, target: ((IAgent)Agent).Guardian, source: Agent.Context.Self); Agent.Send(instruction: instruction); } }