powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Бизнес процесс, экспертные системы, опыт
9 сообщений из 34, страница 2 из 2
Бизнес процесс, экспертные системы, опыт
    #34603216
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander BezninГоспода,
Не о стандартах разговор, так получилось, что тему зацепил,
Разговор о реализации загрузчика, даже при известных стандартах.


Александр, я просто говорю о том, что если Вы посмотрели бы что сделано до Вас в области этой, то может вопрос о загрузчике и не возник бы.
Больше не по теме не буду. :)
...
Рейтинг: 0 / 0
Бизнес процесс, экспертные системы, опыт
    #34616276
Alexander Beznin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Посмотрел как пишут другие, и стало стыдно
Постараюсь форматить сообщения в более приличном виде
Повторю свой подход к описанию загрузчика:

Цель – создать такой обработчик файлов, который
1. распознавал бы известные (имеющие описание) файлы
2. возвращал значения по имени [+индексу], а еще лучше по иерархическому имени (в стиле Excel ссылок или XPath)

Прежде всего, потребовалось как-то получать часть текста.
Задание координат лучше, чем в Excel придумать не удалось, посему при известных разделителях для строк и отдельных слов обработчик стал возвращать для:
R8W3B5L3 – подстроку длиной 4 начинающуюся с 5 позиции 3-го слова в 8-ой строке заданного текста.
R8W3: R40W6 – Область текста начиная со строки 8 по строку 40 и в каждой строке 4 слова начиная с 3 по 6
Lines(L2=”Н-”).Text – Область текста, сформированную из строк, в которых первые 2 символа содержали “H-”
Words(25) – соответственно 25 слово из исходного текста

На этом минимальном инструментарии
1. Задавались характерные признаки файлов
PropertyRuleSeqNoXFileDefR1L14 = "Запись создана"1XFileDefR3L_3 = "ГРС"2XFileDefR20B62L1 in ("E";"Е")3
2. определялись именованные области (в стиле Excel)
ItemItem TypeSourceTab.OrderDataTypeXMLTypeNumberTxtCellR20B63L101TextAKSrlTxtCellR20B62L12TextARAirLineTxtCellR16B55L203TextAOAirLineNoTxtCellR20B56L34TextAO…GrossCalcbkNumPart(R20B1L15)15MoneyAOTaxSumCalcGross - Tariff16MoneyAOTariffCalcbkNumPart(R18B1L15)17MoneyAOPayCryCalcbkCharPart(R20B1L15)18TextAOSegmentsTxtTableR10B16:R14B1619TextERCMTaxesTxtTableR19B1620TextEOCMSrcAmountsTxtCellR2B1:R16B1L1521TextEOS

Для упрощения обработки пришлось таки типизировать именованные области:
TxtSectionНерегулярная областьTxtTableОбласть регулярной структурыTxtCellЭлементарная (неделимая) областьCalcРассчитываемое значение

Задавая для элементов подсказку (XmlType) можно получить вполне обрабатываемый XML и XSD
XMLTypeDescriptionAKКлючевой атрибутARОбязательный атрибутAOНеобязательный атрибутERCMМножественный обязательный элементEOCMМножественный необязательный элементEOSНеобязательный простой элемент

В результате хотелось, что бы обработчик текстовых файлов стал реагировать на запросы типа:
Код: plaintext
1.
2.
3.
4.
?Number
?Segments.Count
?Segments( 1 ).Departure.Airport.Name
?Taxes.Count
Описание файла получилось достаточно простым, но понадобилось обрабатывать выражения.
Помогла идея MS Office: Eval(Expression)
Хуже, с точки зрения производительности, конечно, не бывает …, хотя для обработки описаний подходит
Пришлось разработать языковые средства, но думаю, что существуют готовые разборщики выражений.
Программная реализация состоялась в виде IEval – интерфейса обработки выражений

В случае с загрузчиком файлов в программах стали доступны следующие конструкции
Код: plaintext
1.
2.
3.
4.
5.
…
value = txtLoader.Eval(“Number”)
…
sgtCount =  txtLoader.Eval(“Segments.Count”)
…

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
For each filedef In FileDefs
   defName = filedef.Name
   For each rule In FileDefs.Rules    
       If  Not TxtLoader.Eval(rule.Text) Then 
          defName = “”
          Exit For
       End If
   Next rule 
   If defName <> “” Then Exit For
Next fileDef 

ОПИСАНИЕ ЗАГРУЗКИ
После создания обработчика текстовых файлов с интерфейсом IEval сделать описание загрузки уже было делом техники
Для объекта, в данном случае Service (Услуга) задавалось файлы каких структур он обрабатывает
PrpType RuleNameTransform 1AX_TKTTransform 1AX_HTLTransform 1AX_CAR

А для атрибутов объекта указывалось имя (или выражение) определяющее источник данных
Для TktNo (номера билета)
PrpTypeRuleNameSeqNoRuleTransform1AX_TKT1Number

Для Segments (Описание маршрута)
PrpTypeRuleNameSeqNoRuleTransform1AX_TKT1SegmentsTransform1AX_HTL1SegmentTransform1AX_CAR1Segment
Описание загрузки можно также рассматривать как XLT преобразование


ПРОБЛЕМЫ

Создавая описание файлов обмена, проникаешься подходами разработчиков сторонних систем …
При отсутствии стандартов на обмен информации (это пока факт) ничего не остаётся, как изобретать эти стандарты самому.
В большинстве случаев видно, что системы были разработаны в 19… мохнатом году и используются по сих пор.

1. Структура исходной информации НЕ СОВПАДАЕТ со структурой данных приложения: Т.е. в процессе загрузки необходимо обеспечить не только преобразование типов (12МАР => 12.03.07)
2. Обеспечить совместимую идентификацию
3. Обеспечить обработку недостающей (неоднозначной информации)
...
Рейтинг: 0 / 0
Бизнес процесс, экспертные системы, опыт
    #34616316
Alexander Beznin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
РЕШЕНИЯ:
Наличие описания файлов обмена оказалось достаточным для создания прямого “OLE”
При загрузке, для решения проблем уже понадобились дополнительные усилия (ПРАВИЛА)
Расширение описания загрузки заключалось в задании нескольких правил в зависимости от тех или иных условий.

Эта идея не нова, тот же MS Access предлагает такой объект как Macros, оставалось только расширить список обрабатываемых операндов.
(MS Access позволял работать только со своими объектами и функциями)

Например, компания HP периодически присылала в плоском файле (Excel) списки сотрудников и просила выполнять жёсткий контроль при выписке билетов учитывая подразделения, расчётные центры и ещё какие-то SBE
При этом договориться о предоставлении XML было просто невозможно…
На основании пришедшего файла надо было

1.Подработать в целях получения отчётности и дальнейшей работы с файлами систем бронирования список сотрудников
a. Разделить ФИО сотрудника на фамилию имя и отчество (Разделители любые (и это у HP))
b. перевести с русского на английский, если заданы на русском (транслитерация)
c. перевести с английского на русский, если заданы на английском (статистика)
d. По косвенным признакам определить пол
2.Выделить уникальные списки
a. компаний холдинга
b. расчётных центров
c. статей расхода
3.Обеспечить привязку полученных списков к уже существующей информации
4.Добавить новые элементы
5.Отправить в архив элементы, которых нет в пришедшем списке
6.Отразить изменения для существующих элементов

Аналогично я поступал и при загрузке услуг из систем бронирования.
Особый кайф обработка одной и той же информации, но на разных языках (Начиная от имени пассажира, до кодов аэропортов, классов перелётов, кодов валют и т.п.). Информация приходит на английском, а для клиента надо выводить на русском и наоборот.
Когда Сирена вдруг убрала номер Бланка (единственный доступный идентификатор), я просто пошёл к ним в офис встал на колени и просил слёзно не делать этого…
...
Рейтинг: 0 / 0
Бизнес процесс, экспертные системы, опыт
    #34618431
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander Beznin
Когда Сирена вдруг убрала номер Бланка (единственный доступный идентификатор), я просто пошёл к ним в офис встал на колени и просил слёзно не делать этого…

Хорошо платят, наверное. :)
...
Рейтинг: 0 / 0
Бизнес процесс, экспертные системы, опыт
    #34618539
Alexander Beznin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сахават ЮсифовХорошо платят, наверное. :)
Да не очень, но я о другом...

Если с входными формами ещё можно смириться, то требование о предоставлении отчётности (поставщикам) в виде форматированных XLS файлов уже раздражают (Это к теме стандартов)
Ужели принимающая сторона, а это крупные авиакомпании, держат штат операторов для переколачивания данных в свои системы учёта продаж ???

Для экспорта данных я также воспользовался аналогичной системой описания выходных форм.
На основании этого описания я тупо эммулирую работу оператора по вбиванию информации в требуемые ячейки (поля или формачу построчно текст). Темплейты то ещё и запоролены (отдельное спасибо).

При данном подходе удалось удовлетворить практически всех потребителей.
...
Рейтинг: 0 / 0
Бизнес процесс, экспертные системы, опыт
    #34629801
dvvv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander Beznin
Оказалось что общаться с заказчиками в терминах Объекты и их свойства существенно проще чем в терминах ERD, поскольку удаётся обойтись без мутного понятиия "Связи", когда сами проектировщики с этим термином не знают что делать, то-ли это связь а может уже сущность.


Господь с Вами, зачем термины OD или ERD в разговоре с заказчиком! Пожалейте заказчика, общайтесь с ним в терминах его предметной области! Например, первое с чего я обычно начинаю работу с заказчиком - составление глоссария терминов заказчика, затем все работающие по проекту сотрудники его выучивают и не имеют права при общении с заказчиком отклоняться от этой терминологии.
А вы хотите заказчика учить своему птичьему языку. Он деньги платит, да еще и должен вашу терминологию осваивать?
...
Рейтинг: 0 / 0
Бизнес процесс, экспертные системы, опыт
    #34636178
Alexander Beznin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dvvv составление глоссария терминов заказчика, затем все работающие по проекту сотрудники его выучивают и не имеют права при общении с заказчиком отклоняться от этой терминологии.
А вы хотите заказчика учить своему птичьему языку. Он деньги платит, да еще и должен вашу терминологию осваивать?

В том-то и дело, "Птичий язык" в качестве операндов имеет те самые любимые и понятные заказчику термины, коды и сокращения заказчики определяют сами, а мне лишь остаётся научить PC переводить с птичьего на транслируемый (интерпретируемый) язык, ну попутно в SQL или XPATH
А уж как хранится информация, хуже или лучше, вопрос опыта разработчика.
...
Рейтинг: 0 / 0
Бизнес процесс, экспертные системы, опыт
    #34644721
dvvv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander BezninВ том-то и дело, "Птичий язык" в качестве операндов имеет те самые любимые и понятные заказчику термины, коды и сокращения заказчики определяют сами, а мне лишь остаётся научить PC переводить с птичьего на транслируемый (интерпретируемый) язык, ну попутно в SQL или XPATH
А, в такой постановке вопроса, конечно, я полностью согласен, это лучше, чем общаться в терминах сущностей и связей.
...
Рейтинг: 0 / 0
Бизнес процесс, экспертные системы, опыт
    #34658697
Alexander Beznin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
РАСЧЁТ
Пожалуй, это основная задача, связанная с понятием “Knowledge base”
Мне приходилось столкнуться с 4-мя задачами в этой области
1. Расчёт стоимости услуг, в частности расчет стоимости билетов для клиента
2. Расчёт заработной платы
3. Расчёт амортизационных отчислений
4. Расчет стоимости импортируемого товара

И если в последних 3-х случаях я шёл “стандартным” путём (Один запрограммированный алгоритм и куча коэффициентов в описании), то в первом (последнем по времени) пришлось применить систему ПРАВИЛ для получения искомого результата.

Итак, Сколько стоит билет для клиента?
ПриближениеКомментарий0 Столько - Сколько на нём написано. Фактически “увидев на клетке с тигром надпись буйвол = не верь глазам своим” 1На стоимость влияет форма оплаты (Invoice/Cash/CC). Могут возникать дополнительные сборы за счёт банковских % или налога с продаж (пока отменили)2Место оплаты услуг (Агентство / Касса поставщика; хотя агентство выполняло бронирование услуг)3Валюта продажи (+ конвертация)4Валюта покупки (+ конвертация)5Форма покупки (Invoice/Cash/CC). Могут возникать дополнительные сборы за счёт банковских % 6Контракт с поставщиком (использование спец.тарифов)7Контракт с клиентом (размер скидки и вознаграждения агентства) …

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

Контракты с поставщиком
определяют, в минимальном варианте, размер комиссии агентства,
Оказалось, что для авиаперевозчика (бланки билетов агентство получает напрямую) на процент комиссии влияют:
Какая авиакомпания выполняла рейс,
есть ли с данной компанией у владельца стока дополнительное соглашение,
какой маршрут,
какой тариф,
какой класс и т.д
И поставщик бланков почему-то обижается, если в отчёте о продажах все эти параметры учтены.
Агент, выпуская билеты, может кое-что, и забыть или не знать (до 70 штук в день на разных бланках)

Новая вводная – Агентство не имеет прямого договора с авиаперевозчиком, а получает бланки у другого агентства (VIP, MAVINS)
Одна серия бланков (195) от разных поставщиков и в каждом случае свои условия…

Ниже пример решения на основе Правил

Code Name AttributeValueCodeValuencCmssSppCommission Included In Tariff (Rub)Formula0SupplierCode <> OwnCompany!Code and instr(type;"visa") > 0 and buyType notin ("Nnet";"NGross")Formula0SupplierCode <> OwnCompany!Code and instr(type;"visa") > 0 and buyType notin ("Nnet";"NGross")FormulancCmssSpp1ncCmssSpp1Commission of External Supplier Included In Tariff (Rub)FormulancTariff * CmssPercentOrder!Type = "Group"FormulancCmssSppStdncCmssSppStdCommission Included In Tariff (Rub) for Regular OrdersFormulancCmssSppUSDFormulancCmssSppRUBCalcCurrency = "RUB"ncCmssSppRUBCommission Included In Tarrif (Rub). Original Tariff is RubFormulaRulesValue(SpplComp!ContrTerms("SvcNcCmssSpp"))SpplComp!ContrTerms("SvcNcCmssSpp")!Countof(*) > 0FormulaCRSTariff * CmssPersent

А здесь часть контракта с LH (Lufthansa) по поводу расчёта комиссии
AttributeValueConditionCmssPcnt1CmssPercentCmssPcnt10TicketDate > 01.09.04 And Cities(code = [bkWordGet(Routing;1;"/";" ";"\";"-")])!Country = "DE"SvcNcCmssSppCRSTariff * CmssPcnt1 * NSRTicketDate > 01.09.04 And CalcCurrency <> "RUB"SvcNcCmssSppCRSTariff * CmssPcnt1TicketDate > 01.09.04 And CalcCurrency = "RUB"

Итак Выше приведён алгоритм расчёта, который имеет 6 ветвлений
и это один из простых случаев
Не описанные переменные, используемые в формулах - это либо хранимая в таблицах информация, либо другие именованные правила.

Отсутствие условий (здесь колонка Code Value) - Это правила умолчания
...
Рейтинг: 0 / 0
9 сообщений из 34, страница 2 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Бизнес процесс, экспертные системы, опыт
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]