Мастер класс ;-) Классификаторы на XML

Обсуждение технических вопросов работы с системами управления базами данных (СУБД), работе с языком SQL и скриптовыми языками.
Ответить
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Мастер класс ;-) Классификаторы на XML

Сообщение Александр »

специально для СК :wink: :wink: :wink:

задача - заполнить 7 выпадающих списков данными в зависимости от текущего значения того или иного выпадающего списка (из этих 7ми) т.е. из Классификатора
и в зависимости от выбранных значений получить описание позиции
вот картинка
30.gif
30.gif (30.27 КБ) 49782 просмотра
1. Штатный Классификатор на объектах
минусы
- очень тормозной
- можно использовать только одно значение для одной позиции - а мне нужно для каждой позиции 3 минимум
2. Сделал классификатор на объектах
минусы
- очень тормозной ПРИЧЕМ - мы сделали view для скорости - еще что-то - но никак 8 сек на 200 позиций хоть убейся!
плюсы
- можно использовать несколько значений для одной позиции
вот типа этого
31.gif
31.gif (6.53 КБ) 49782 просмотра
атрибутов здесь не видно - но они есть :wink:
в атрибуты входит
1. Англоязычное наименование позиции
2. Русскоязычное наименование позиции
3. Код позиции

отступление
у меня работа с классификатором проходит в 2 этапа
1й заполняю выпадающие списки и в зависимости от из текущих значений получаю код комбинации
например в таком виде - T00-15F3-11-00L2-14-15-00
2й в соответствии с кодом вытаскиваю из ini файла расшифровку позиции
например так
T00-15F3-11-00L2-14-15-00='&FromProdName -> &ProdName Upgrade, &LangR, сетевой, доп. лицензия &PNote'

вот теперь приступим :wink: :wink: :wink:
3й вариант классификатора на XML
минусы
- голову сломаешь пока поймешь что-же нужно там расположить... ну это везде так :wink:
плюсы
- 'высокая' скорость (2 сек на 200 позиций) (конечно зависит от объема инфы - но по любому быстрее чем в Лоции)
- можно использовать несколько значений для одной позиции
... продолжение следует
Последний раз редактировалось Александр 22 янв 2009, 10:37, всего редактировалось 4 раза.

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Re: Мастер класс ;-) Классификаторы на XML

Сообщение Александр »

формат XML довольно простой если не лезть слишком глубоко
т.е. узлы (=объекты) и атрибуты
в моем случае это выглядит так

Код: Выделить всё

<?xml version="1.0" encoding="UTF-8"?>
<TemplateList>
   <Template eName="Autodesk" rName="Autodesk" Code="00">
      <ChannelType eName="Commercial" rName="Коммерческий" Code="15">
         <ProductType eName="New" rName="Новый" Code="15">
            <ProductExtType eName="" rName="" Code="00">
               <LicenceType eName="..." rName="Без учета лицензии" Code="00">
                  <LicenceExtType eName="" rName="" Code="00">
                     <LicenceAddType eName="" rName="" Code="00"/>
                  </LicenceExtType>
               </LicenceType>
               <LicenceType eName="Single License Manager (SLM)" rName="Локальная лицензия" Code="14">
                  <LicenceExtType eName="" rName="" Code="00">
                     <LicenceAddType eName="" rName="" Code="00"/>
                  </LicenceExtType>
...
или еще вот кусочек оттуда

Код: Выделить всё

            <ProductExtType eName="Подписка на квартальное обновление" rName="Подписка на квартальное обновление" Code="15">
               <LicenceType eName="Single License Manager (SLM)" rName="Локальная лицензия" Code="14">
                  <LicenceExtType eName="..." rName="Чистая локальная лицензия" Code="00">
                     <LicenceAddType eName="" rName="" Code="00"/>
                  </LicenceExtType>
               </LicenceType>
               <LicenceType eName="Network License Manager (NLM)" rName="Сетевая лицензия" Code="15">
                  <LicenceExtType eName="1-5 seats" rName="1-5  рабочих мест" Code="03">
                     <LicenceAddType eName="" rName="" Code="00"/>
                  </LicenceExtType>
                  <LicenceExtType eName="6-20 seats" rName="6-20 рабочих мест" Code="04">
                     <LicenceAddType eName="" rName="" Code="00"/>
                  </LicenceExtType>
                  <LicenceExtType eName="21-50 seats" rName="21-50  рабочих мест" Code="05">
                     <LicenceAddType eName="" rName="" Code="00"/>
                  </LicenceExtType>
т.е. мы видим дерево (узел+3атрибута) - максимальная вложенность 7 уровней
по уровню на каждый список
XML - это простой текстовый файл с разметкой
в итоге мы можем делать поиск узлов, читать дочерние узлы, читать атрибуты, вобщем читать все что угодно и что немаловажно с помощью Лоции

этот файл узлы с атрибутами закрывает первую часть моей задачи - заполнение списков и получение кода комбинации
продолжение следует...

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Re: Мастер класс ;-) Классификаторы на XML

Сообщение Александр »

вторая часть - по уникальному коду получить расшифровку позиции
если раньше мы использовали формат ini файла, то с переходом на xml было ужасно лень писать его обработку в скриптах...
и мы недолго думая заменили формат ini на xml
типа вот так
ini файл

Код: Выделить всё

[T0] ;Шаблон Autodesk

;     ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ Шаблон Autodesk

; *** Commercial Шаблон Autodesk

;     New
T00-15F1-15-00L1-14-00-00='&ProdName коммерческий, &LangR, локальный &PNote'
--T00-15F1-15-00L2-14-14-00='&ProdName коммерческий, &LangR, локальный,доп.лицензия &PNote'
T00-15F1-15-00L1-15-00-00='&ProdName коммерческий, &LangR, сетевой &PNote' 
--T00-15F1-15-00L2-15-15-00='&ProdName коммерческий, &LangR, сетевой, доп.лицензия &PNote' 
T00-15F1-15-00L1-00-00-00='&ProdName коммерческий, &LangR &PNote' 

;     Trial (Demo)
T00-15F1-12-00L0-00-00-00='&ProdName &LangR Trial(Demo) &PNote' 

;     Upgrade
T00-15F3-11-00L1-00-00-00='&FromProdName -> &ProdName Upgrade, &LangR &PNote'
T00-15F3-11-00L1-14-00-00='&FromProdName -> &ProdName Upgrade, &LangR, локальный &PNote'
--T00-15F3-11-00L2-15-15-00='&FromProdName -> &ProdName Upgrade, &LangR, локальный, доп.лицензия &PNote'
T00-15F3-11-00L1-15-00-00='&FromProdName -> &ProdName Upgrade, &LangR, сетевой &PNote'
--T00-15F3-11-00L2-14-15-00='&FromProdName -> &ProdName Upgrade, &LangR, сетевой, доп. лицензия &PNote'
T00-15F3-11-13L1-00-00-00='&FromProdName -> &ProdName Competiteve Upgrade &PNote' 
xml файл

Код: Выделить всё

<?xml version="1.0" encoding="UTF-8"?>
<!-- -->
<!-- XML Source File    Created with SAPIEN Technologies PrimalScript 2007 -->
<!-- -->
<!-- NAME: -->
<!-- -->
<!-- AUTHOR: Alexandr Zaytsev -->
<!-- DATE  : 20.01.2009 -->
<!-- -->
<!-- COMMENT: -->
<!-- Формирование названий ПО по шаблонам -->
<!-- -->
<!-- ProdName- New полное название из прайса поставщика -->
<!-- ProdN- New сокращенное название из прайса поставщика -->
<!-- FromProdName- Upgrade/Exchange полное название из прайса поставщика -->
<!-- LangR- язык (русская транскрипция) -->
<!-- LangE- язык (английская транскрипция) -->
<!-- Box- тип упаковки -->
<!-- PNote- дополнительное описание позиции -->
<!-- CompanyName- полное наименование компании разработчика -->
<!-- LicExt- дополнительный тип лицензии-->
<!-- -->
<!-- Autodesk Commercial -->
<!-- New -->
<TemplateList>
	<channel>
  		<item>
   			<title>T00-15F1-15-00L1-14-00-00</title>
   			<description>ProdName коммерческий, LangR, локальный PNote</description>
  		</item>
 		<item>
   			<title>T00-15F1-15-00L2-14-14-00</title>
   			<description>ProdName коммерческий, LangR, локальный,доп.лицензия PNote</description>
		</item>
		<item>
   			<title>T00-15F1-15-00L1-15-00-00</title>
   			<description>ProdName коммерческий, LangR, сетевой PNote</description>
		</item>
		<item>
   			<title>T00-15F1-15-00L2-15-15-00</title>
   			<description>ProdName коммерческий, LangR, сетевой, доп.лицензия PNote</description>
		</item>
		<item>
   			<title>T00-15F1-15-00L1-00-00-00</title>
   			<description>ProdName коммерческий, LangR PNote</description>
		</item>
<!-- Trial -->
		<item>
   			<title>T00-15F1-12-00L0-00-00-00</title>
   			<description>ProdName LangR Trial(Demo) PNote</description>
		</item>
<!-- Upgrade -->
		<item>
   			<title>T00-15F3-11-00L1-00-00-00</title>
   			<description>FromProdName -> ProdName Upgrade, LangR PNote</description>
		</item>
		<item>
   			<title>T00-15F3-11-00L1-14-00-00</title>
   			<description>FromProdName -> ProdName Upgrade, LangR, локальный PNote</description>
		</item>
		<item>
   			<title>T00-15F3-11-00L2-15-15-00</title>
   			<description>FromProdName -> ProdName Upgrade, LangR, локальный, доп.лицензия PNote</description>
		</item>
тут xml другого формата - без атрибутов - поскольку они не нужны
т.е. в xml можно использовать любые комбинации структур данных какие надо
продолжение следует...

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

Аватара пользователя
Старик Крупский
Активный участник
Сообщения: 803
Зарегистрирован: 27 июл 2006, 22:17
Откуда: Москва

Re: Мастер класс ;-) Классификаторы на XML

Сообщение Старик Крупский »

Всё! Понял! Ты просто используешь XML как хранилище классификатора. А я-то подумал, что ты объектный классификатор каждый раз выгружаешь в XML, потом обратно считываешь из XML и все получается быстро :-))
"Лучше меньше, да лучше" (C)
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Re: Мастер класс ;-) Классификаторы на XML

Сообщение Александр »

да именно так :wink: как ВНЕШНЕЕ альтернативное хранилище
борюсь за каждую секунду - здесь выиграл аж целых 6 на каждую операцию
работает быстрее - однозначно
кроме того нам например нужен КЛАДР классификатор адресов России
если сделать его аналог в Лоции то мы умрем на 2000 тысячах комбинаций республика-область-город
между тем на xml такие классификаторы используются в web - odnoklassniki к примеру, и на других сайтах для локализации юзера и работаю в Реальном Времени!!!! и есть бесплатно! это однозначный прорыв в скорости :wink: (я имею в виду скорость привязанную к структуре данных Лоции - с проверками на права)

код к мастер классу показать? или и так все ясно? :wink: :wink:
Последний раз редактировалось Александр 22 янв 2009, 11:04, всего редактировалось 1 раз.

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

CDuke
Новый участник
Сообщения: 4
Зарегистрирован: 03 сен 2008, 09:10

Re: Мастер класс ;-) Классификаторы на XML

Сообщение CDuke »

Идея с XML очень интересная. Идея 5 баллов
Но как я понимаю этот XML файл хранится у каждого пользователя на компьютере или вы расшарили этот файл в сети?
Ведь вроде хранить этот файл в БД не получится?
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Re: Мастер класс ;-) Классификаторы на XML

Сообщение Александр »

да :wink: у нас 2 варианта на случай сбоев
в обновлении Лоции на сети есть своя папка с шаблонами и прочими нашими файлами, вместе с этими
там же есть есть ini в котором прописано откуда брать файлы - из сети или из клиента
при очередном обновлении все копируется на клиентские места
и в зависимости от стабильности работы сети - я или юзер сам может изменить путь

в общем при отладке - берем из сети
потом переключаемся на локальные пути

хранить xml можно и в базе, у SQL2005 есть такой тип данных, но у Лоции вроде как не прописан :wink:
так что пока как внешние файлы :wink:

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

CDuke
Новый участник
Сообщения: 4
Зарегистрирован: 03 сен 2008, 09:10

Re: Мастер класс ;-) Классификаторы на XML

Сообщение CDuke »

Будем ждать, может пропишут :)
Аватара пользователя
Alexey
Активный участник
Сообщения: 123
Зарегистрирован: 21 окт 2005, 15:49
Откуда: Белоруссия, Минск
Контактная информация:

Re: Мастер класс ;-) Классификаторы на XML

Сообщение Alexey »

Александр, как всегда на высоте!!! Вот сижу и завидую... так как наши Заказчики работают не с самой последней версией лоции, а точнее 4.12 да и еще и сборочка... жутики... а ведь такие решения тоже упростили бы и им и нам жизнь.
Так что Саша, еще раз +100.
- А деньги?
- Какие деньги? - сказал Остап, открывая дверь. - Вы, кажется, спросили про какие-то деньги?
----------------------------------
SEO стало интересным
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Re: Мастер класс ;-) Классификаторы на XML

Сообщение Александр »

:wink:
ты хоть скажи +100 в какой валюте? :wink: :wink: :wink:
буду виртуально копить

ps
кстати на счет версии - можно и заработать на апгрейде - не так ли?
аргументы есть убойные! :wink:

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

Аватара пользователя
Alexey
Активный участник
Сообщения: 123
Зарегистрирован: 21 окт 2005, 15:49
Откуда: Белоруссия, Минск
Контактная информация:

Re: Мастер класс ;-) Классификаторы на XML

Сообщение Alexey »

офтоп: +100 в граммах ))) Копи, копи... мот накопишь. А что касается апгрейда... то уже миллион раз уговаривали.. но никак... но попыток не оставляем... чтобы апгрейдик все же сделать...
- А деньги?
- Какие деньги? - сказал Остап, открывая дверь. - Вы, кажется, спросили про какие-то деньги?
----------------------------------
SEO стало интересным
Ответить