Exemple #1
0
        public void CreateCost(ScAddress node)
        {
            //ищем адресс узла стоимость
            var costAddress = this.FindElementAddress(nrel_cost);

            // ищем адрес узла цена
            var priceAddress = this.FindElementAddress(nrel_price);
            //ищем значение узла по предикату
            double price = this.FindValueByPredicate(node, priceAddress);

            //ищем адрес узла количество
            var quantityAddress = this.FindElementAddress(nrel_quantity);
            //ищем значение узла по предикату
            double quantity = this.FindValueByPredicate(node, quantityAddress);

            //если все найдено, делаем стоимость
            if (price != double.NaN && quantity != double.NaN)
            {
                //создаем ссылку, и задаем ей значение в виде произведения
                var cmdCreateLink = new CreateLinkCommand();
                var rspCreateLink = (CreateLinkResponse)client.Send(cmdCreateLink);

                var cmdSetValue = new SetLinkContentCommand(rspCreateLink.CreatedLinkAddress, new LinkContent(price * quantity));
                var rspSetValue = (SetLinkContentResponse)client.Send(cmdSetValue);

                // соединяем все дугами
                var commonArcAdr = this.CreateArcCommand(ElementType.ConstantCommonArc, node, rspCreateLink.CreatedLinkAddress);
                this.CreateArcCommand(ElementType.PositiveConstantPermanentAccessArc, costAddress, commonArcAdr);
            }
        }
Exemple #2
0
        public void CreateCost(ScAddress node)
        {
            //ищем адресс узла стоимость
            var costAddress = this.FindElementAddress(nrel_cost);

            // ищем адрес узла цена
            var priceAddress = this.FindElementAddress(nrel_price);
            //ищем значение узла по предикату
            double price = this.FindValueByPredicate(node, priceAddress);

            //ищем адрес узла количество
            var quantityAddress = this.FindElementAddress(nrel_quantity);
            //ищем значение узла по предикату
            double quantity = this.FindValueByPredicate(node, quantityAddress);

            //если все найдено, делаем стоимость
            if (price != double.NaN && quantity != double.NaN)
            {

                //создаем ссылку, и задаем ей значение в виде произведения
                var cmdCreateLink = new CreateLinkCommand();
                var rspCreateLink = (CreateLinkResponse)client.Send(cmdCreateLink);

                var cmdSetValue = new SetLinkContentCommand(rspCreateLink.CreatedLinkAddress, new LinkContent(price * quantity));
                var rspSetValue = (SetLinkContentResponse)client.Send(cmdSetValue);

                // соединяем все дугами
                var commonArcAdr = this.CreateArcCommand(ElementType.ConstantCommonArc, node, rspCreateLink.CreatedLinkAddress);
                this.CreateArcCommand(ElementType.PositiveConstantPermanentAccessArc, costAddress, commonArcAdr);

            }
        }
        /// <summary>
        /// Задание содержимого для ссылки.
        /// </summary>
        /// <param name="linkAddress">SC-адрес ссылки</param>
        /// <param name="content">содержимое для ссылки</param>
        /// <returns><b>true</b>, если контент задан</returns>
        public bool SetLinkContent(ScAddress linkAddress, LinkContent content)
        {
            bool isSet = false;

            if (knowledgeBase.IsAvaible)
            {
                var command  = new SetLinkContentCommand(linkAddress, content);
                var response = (SetLinkContentResponse)knowledgeBase.ExecuteCommand(command);
                isSet = response.ContentIsSet;
            }
            return(isSet);
        }