Система обработки заявок, Стыковка со сторонним/своим ПО |
Здравствуйте, гость ( Вход | Регистрация )
Система обработки заявок, Стыковка со сторонним/своим ПО |
Андрей Ефименко |
13.1.2022, 8:32
Сообщение
#61
|
Активист Группа: Администраторы Сообщений: 2 716 Регистрация: 8.2.2006 Пользователь №: 4 |
Скорее установки организации. Что бы можно было с нескольких установок SPult отправлять заявки в одну базу . И что бы можно было однозначно понять что это данные именно наши, а не кто-то пытается подсунуть левый XML, и если ключ не соответствует, то просто игнорируем данные и выдаем 404 ошибку. Тогда это следующий параметр: POST /lkds HTTP/1.1 Host: localhost Content-Type: text/xml; charset=utf-8 Content-Length: 372 Connection: keep-alive Cache-Control: no-cache <?xml version="1.0"?> <PULT ContentType="request" Name="Test" GUID="E91AF61B9F2E47AA82A23310ECB01D85" IdDB="1"> <DISP Name="Диспетчерская" IdDB="1"> <STREET Name="ул. Pro" IdDB="3"> <HOME Name="д. Pro" IdDB="3"> <LIFT Name="п. 1" ID="3" GUID="C3AE5B687D17410FB52953E84D793F2B" IDPro="1" IdDB="5" Note="Не работает" <ListStatus> <Status Name="Открыто МП"/> <Status Name="Кабина стоит"/> </ListStatus> </LIFT> </HOME> </STREET> </DISP> </PULT> Данный параметр однозначно определяет одну организацию в LKDSCloud и LKDSDomain И одну установку LKDSDisp |
anatoliy |
14.1.2022, 1:21
Сообщение
#62
|
Участник Группа: Пользователи Сообщений: 70 Регистрация: 9.4.2010 Из: Ростов-на-Дону Пользователь №: 4 610 |
Тогда это следующий параметр: ... <?xml version="1.0"?> <PULT ContentType="request" Name="Test" GUID="E91AF61B9F2E47AA82A23310ECB01D85" IdDB="1"> ..... Данный параметр однозначно определяет одну организацию в LKDSCloud и LKDSDomain И одну установку LKDSDisp Т.е. это не идентификатор установки SPult? И он останется неизменным, даже если установлю SPult на другой компьютер? Естественно подключение будет к тому-же lkdsdisp или Domain! А что по поводу выбора ответственного из формы формирования заявки, возможно такое ? -------------------- Если ты ненавидишь – значит тебя победили.
На самом деле, жизнь проста, но мы настойчиво её усложняем. |
Андрей Ефименко |
14.1.2022, 15:51
Сообщение
#63
|
Активист Группа: Администраторы Сообщений: 2 716 Регистрация: 8.2.2006 Пользователь №: 4 |
Т.е. это не идентификатор установки SPult? И он останется неизменным, даже если установлю SPult на другой компьютер? Естественно подключение будет к тому-же lkdsdisp или Domain! Да так. В базе данных LKDSDISP это поле В базе данных LKDSDOMAIN это поле А что по поводу выбора ответственного из формы формирования заявки, возможно такое ? Технически, конечно, можно в форме сделать выбор из выпадающего списка обладателя сервисного ключа с номером сервисного ключа и передать эту информацию в POST запросе. Сделать только это нужно так, что бы не сильно напрячь других пользователей изменением формы заявки. |
anatoliy |
14.1.2022, 22:37
Сообщение
#64
|
Участник Группа: Пользователи Сообщений: 70 Регистрация: 9.4.2010 Из: Ростов-на-Дону Пользователь №: 4 610 |
Да так. Ну тогда это то что надо! Сделать только это нужно так, что бы не сильно напрячь других пользователей изменением формы заявки. Нижнее поле же есть, и оно не активно. Его и использовать, только первым пунктом, (по умолчанию) будет 0 , т.е.выбор пустой. Или это поле зарезервировано для каких-то других целей? Ну или давайте подождем мнение других. -------------------- Если ты ненавидишь – значит тебя победили.
На самом деле, жизнь проста, но мы настойчиво её усложняем. |
Nikolaj76 |
12.2.2022, 20:49
Сообщение
#65
|
Участник Группа: Пользователи Сообщений: 70 Регистрация: 28.9.2021 Пользователь №: 8 603 |
Да так. В базе данных LKDSDISP это поле В базе данных LKDSDOMAIN это поле Технически, конечно, можно в форме сделать выбор из выпадающего списка обладателя сервисного ключа с номером сервисного ключа и передать эту информацию в POST запросе. Сделать только это нужно так, что бы не сильно напрячь других пользователей изменением формы заявки. Лично мое скромное мнение ни на что не претендующие: в запросе есть вся необходимая информация для выполнения заявки. Более детальная и подробная информация есть в основной базе SQL Spult. Единственное пожелание диспетчеров на которых сейчас мы это обкатываем, увеличить количество вводимых символов в форме Spult . Им приходится часто прибегать к сокращениям слов. По поводу XML - не хотелось бы чтобы он поменял свою структуру внезапно. Т.К в нашем случае данные из него автоматом обрабатываются, записываются в базу и уже от туда формируется заявка, после чего диспетчеру остается только закрыть заявку написав комментарий и время пуска, когда механик доложит о выполнении. |
Андрей Ефименко |
13.2.2022, 9:44
Сообщение
#66
|
Активист Группа: Администраторы Сообщений: 2 716 Регистрация: 8.2.2006 Пользователь №: 4 |
Единственное пожелание диспетчеров на которых сейчас мы это обкатываем, увеличить количество вводимых символов в форме Spult . Им приходится часто прибегать к сокращениям слов. Имеется в виду увеличить ширину поля ? По поводу XML - не хотелось бы чтобы он поменял свою структуру внезапно. Т.К в нашем случае данные из него автоматом обрабатываются, записываются в базу и уже от туда формируется заявка, после чего диспетчеру остается только закрыть заявку написав комментарий и время пуска, когда механик доложит о выполнении. Сама структура XML строки заявки и не будет никогда меняться. Добавление новых параметров и ветвей в XML строку не должно влиять на ПО, разбирающее эту строку. Обычно, и это правильно, для разбора XML строки используют готовые разборщики (процедуры), что позволяет пропускать новые параметры и ветви. |
Nikolaj76 |
13.2.2022, 12:31
Сообщение
#67
|
Участник Группа: Пользователи Сообщений: 70 Регистрация: 28.9.2021 Пользователь №: 8 603 |
Сам размер поля устраивает, количество вводимых символов не хватает. Сейчас можно ввести не более 61 символ. Сама структура XML строки заявки и не будет никогда меняться. Добавление новых параметров и ветвей в XML строку не должно влиять на ПО, разбирающее эту строку. Обычно, и это правильно, для разбора XML строки используют готовые разборщики (процедуры), что позволяет пропускать новые параметры и ветви. У нас данные из SPult обрабатываются с помощью PHP на сервере. Преобразуются в многомерный массив и от туда нужные данные раскладываются в базу SQL. Например имя диспетчерской выглядит так - ["DISP"]["@attributes"]["Name"] Сделано это потому что данный файлик Spult не на чистом XML. Его структура отличается от классического построения. При изменении структуры файла (изменении количества либо наименования тегов) массив тоже измениться. По этой же причине сейчас проблематично для меня обработать неисправности переданные в данном файле. Дело в том что они идут под одним и тем же тегом: <ListStatus> <Status Name="Пожарная опасность"/> <Status Name="Кабина стоит"/> </ListStatus> и их количество меняется постоянно ( от 1 и до бесконечности). Можно конечно к ним обратиться с помощью функции foreach, но на мой взгляд удобнее было бы если данная информация шла под одним тегом <Status> Name="Пожарная опасность. Кабина стоит" </Status> |
Андрей Ефименко |
13.2.2022, 15:25
Сообщение
#68
|
Активист Группа: Администраторы Сообщений: 2 716 Регистрация: 8.2.2006 Пользователь №: 4 |
Сделано это потому что данный файлик Spult не на чистом XML. Его структура отличается от классического построения. Хотелось бы узнать подробнее в чем "нечистость" и отличие от классического построения строки XML, которую SPult передаёт в качестве заявки на обслуживание. |
Nikolaj76 |
13.2.2022, 21:06
Сообщение
#69
|
Участник Группа: Пользователи Сообщений: 70 Регистрация: 28.9.2021 Пользователь №: 8 603 |
В моем понимании( возможно не совпадающем с Вашим)
пример XML: <?xml version="1.0"?> <CAT> <NAME>Izzy</NAME> <BREED>Siamese</BREED> <AGE>6</AGE> <ALTERED>yes</ALTERED> <DECLAWED>no</DECLAWED> <LICENSE>Izz138bod</LICENSE> <OWNER>Colin Wilcox</OWNER> </CAT> И Ваш код: <?xml version="1.0"?> <PULT ContentType="request" Name="Test" GUID="E91AF61B9F2E47AA82A23310ECB01D85" IdDB="1"> <DISP Name="Диспетчерская" IdDB="1"> <STREET Name="ул. Pro" IdDB="3"> <HOME Name="д. Pro" IdDB="3"> <LIFT Name="п. 1" ID="3" GUID="C3AE5B687D17410FB52953E84D793F2B" IDPro="1" IdDB="5" Note="Не работает" <ListStatus> <Status Name="Открыто МП"/> <Status Name="Кабина стоит"/> </ListStatus> </LIFT> </HOME> </STREET> </DISP> </PULT> Вопрос (Без каких либо упреков, недовольства либо сарказма в Ваш адрес): Как обработать данный файл тег <Status> если он не один, его количество неизвестно и в каждом запросе отличается? цель обработки- формирование таблички в базе данных где каждый тег это своя ячейка. P/S: еще раз не воспринимайте это как критику. Вы проделали огромный фронт работ и система Обь востребована в сфере лифтового хозяйства. Вы разработчик и мы в любом случае можем лишь подстраиваться под Ваше программное обеспечение. Но человек по своей натуре лентяй ( и я не исключение) поэтому хотелось бы при взаимодействие с Вашим оборудованием и программным обеспечением совершать как можно меньше лишних телодвижений |
Андрей Ефименко |
14.2.2022, 8:23
Сообщение
#70
|
Активист Группа: Администраторы Сообщений: 2 716 Регистрация: 8.2.2006 Пользователь №: 4 |
В моем понимании( возможно не совпадающем с Вашим) пример XML: <?xml version="1.0"?> <CAT> <NAME>Izzy</NAME> <BREED>Siamese</BREED> <AGE>6</AGE> <ALTERED>yes</ALTERED> <DECLAWED>no</DECLAWED> <LICENSE>Izz138bod</LICENSE> <OWNER>Colin Wilcox</OWNER> </CAT> И Ваш код: <?xml version="1.0"?> <PULT ContentType="request" Name="Test" GUID="E91AF61B9F2E47AA82A23310ECB01D85" IdDB="1"> <DISP Name="Диспетчерская" IdDB="1"> <STREET Name="ул. Pro" IdDB="3"> <HOME Name="д. Pro" IdDB="3"> <LIFT Name="п. 1" ID="3" GUID="C3AE5B687D17410FB52953E84D793F2B" IDPro="1" IdDB="5" Note="Не работает" <ListStatus> <Status Name="Открыто МП"/> <Status Name="Кабина стоит"/> </ListStatus> </LIFT> </HOME> </STREET> </DISP> </PULT> Вопрос (Без каких либо упреков, недовольства либо сарказма в Ваш адрес): Как обработать данный файл тег <Status> если он не один, его количество неизвестно и в каждом запросе отличается? цель обработки- формирование таблички в базе данных где каждый тег это своя ячейка. P/S: еще раз не воспринимайте это как критику. Вы проделали огромный фронт работ и система Обь востребована в сфере лифтового хозяйства. Вы разработчик и мы в любом случае можем лишь подстраиваться под Ваше программное обеспечение. Но человек по своей натуре лентяй ( и я не исключение) поэтому хотелось бы при взаимодействие с Вашим оборудованием и программным обеспечением совершать как можно меньше лишних телодвижений Язык XML стандартизирован И важно понять соответствует ли XML строка заявки стандарту на язык. Если есть какие-то сомнения, то хотел бы их получить со ссылками на стандарт. Почему это важно - использование XML делает описание каких-то параметров расширяемым, т.е. в описание можно добавлять новые параметры и этот не нарушит работу существующего ПО, если это ПО при чтении XML учитывает стандарт. Конфигурационные файлы ДК "Обь" используют XML. Большие массивы данных передаются между модулями в виде XML. В наших XML структурах используются атрибуты для большей компактности и читаемости, т.к. и человек может смотреть XML, а компактность важна для сетевой передачи. Формируются и читаются XML данных штатными процедурами C++, C#, Java, Swift Вот пример реального XML описания экранной формы универсального приложения Microsoft: <Page x:Class="WSPult.BatteryPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:WSPult" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" SizeChanged="Page_SizeChanged"> <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <TextBlock x:Name="Address" Margin="0,0,0,0" Grid.Row="0" TextWrapping="Wrap" Text="TextBlock" VerticalAlignment="Top" FontSize="18" FontStyle="Italic"/> <StackPanel Grid.Row="1" Orientation="Horizontal"> <TextBlock x:Uid="BatteryPageStatus" FontSize="18" /> <TextBlock x:Name="Status" x:Uid="BatteryPageStatusGood" Margin="10,0,0,0" FontSize="18" /> </StackPanel> <StackPanel Grid.Row="2" Orientation="Horizontal"> <TextBlock x:Uid="BatteryPageNextTest" FontSize="18" /> <TextBlock x:Name="Next" x:Uid="BatteryPageTimeTest" Margin="10,0,0,0" FontSize="18" /> </StackPanel> <StackPanel Grid.Row="3" Orientation="Horizontal"> <TextBlock Text="Uzar:" FontSize="18" /> <TextBlock x:Name="UZar" Text="UZar" Margin="10,0,0,0" FontSize="18" /> <TextBlock Text="Ustart:" Margin="10,0,0,0" FontSize="18" /> <TextBlock x:Name="Ustart" Text="Ustart" Margin="10,0,0,0" FontSize="18" /> <TextBlock Text="Ufinish:" Margin="10,0,0,0" FontSize="18" /> <TextBlock x:Name="Ufinish" Text="Ufinish" Margin="10,0,0,0" FontSize="18" /> </StackPanel> <Canvas x:Name="PanelGraph" Grid.Row="4"> <Line x:Name="BegVert" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="2"/> <TextBlock x:Name="BegVertNum" Text="" FontSize="18" /> <Line x:Name="BegGoriz" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="2"/> <TextBlock x:Name="BegGorizNum" Text="" FontSize="18" /> <Line x:Name="Line1" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="1"/> <TextBlock x:Name="Num1" Text="" FontSize="18" /> <Line x:Name="Line2" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="1"/> <TextBlock x:Name="Num2" Text="" FontSize="18" /> <Line x:Name="Line3" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="1"/> <TextBlock x:Name="Num3" Text="" FontSize="18" /> <Line x:Name="Line4" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="1"/> <TextBlock x:Name="Num4" Text="" FontSize="18" /> <Line x:Name="Line5" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="1"/> <TextBlock x:Name="Num5" Text="" FontSize="18" /> <Line x:Name="Line6" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="1"/> <TextBlock x:Name="Num6" Text="" FontSize="18" /> <Line x:Name="Line7" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="1"/> <TextBlock x:Name="Num7" Text="" FontSize="18" /> <Line x:Name="Line8" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="1"/> <TextBlock x:Name="Num8" Text="" FontSize="18" /> <Line x:Name="Line9" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="1"/> <TextBlock x:Name="Num9" Text="" FontSize="18" /> <Line x:Name="Line10" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="1"/> <TextBlock x:Name="Num10" Text="" FontSize="18" /> <Line x:Name="Line11" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="1"/> <TextBlock x:Name="Num11" Text="" FontSize="18" /> <Line x:Name="Line12" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="1"/> <TextBlock x:Name="Num12" Text="" FontSize="18" /> <Line x:Name="Line13" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="1"/> <TextBlock x:Name="Num13" Text="" FontSize="18" /> <Line x:Name="Line14" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="1"/> <TextBlock x:Name="Num14" Text="" FontSize="18" /> <Line x:Name="Line15" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="1"/> <TextBlock x:Name="Num15" Text="" FontSize="18" /> <Path Stroke="Blue" StrokeThickness="4" > <Path.Data> <PathGeometry> <PathGeometry.Figures> <PathFigure x:Name="Graph"> </PathFigure> </PathGeometry.Figures> </PathGeometry> </Path.Data> </Path> <TextBlock x:Name="CurU" Text="" FontSize="18" /> <TextBlock x:Name="TimEnd" Text="" FontSize="18" /> <Line x:Name="EndTestLine" Stroke="{ThemeResource ApplicationForegroundThemeBrush}" StrokeThickness="2"/> <TextBlock x:Name="EndTestTime" Text="" FontSize="18" /> </Canvas> </Grid> </Page> |
anatoliy |
30.3.2022, 20:22
Сообщение
#71
|
Участник Группа: Пользователи Сообщений: 70 Регистрация: 9.4.2010 Из: Ростов-на-Дону Пользователь №: 4 610 |
Цитата Сделано это потому что данный файлик Spult не на чистом XML. Его структура отличается от классического построения. При изменении структуры файла (изменении количества либо наименования тегов) массив тоже измениться. По этой же причине сейчас проблематично для меня обработать неисправности переданные в данном файле. Дело в том что они идут под одним и тем же тегом: <ListStatus> <Status Name="Пожарная опасность"/> <Status Name="Кабина стоит"/> </ListStatus> и их количество меняется постоянно ( от 1 и до бесконечности). Можно конечно к ним обратиться с помощью функции foreach, но на мой взгляд удобнее было бы если данная информация шла под одним тегом <Status> Name="Пожарная опасность. Кабина стоит" </Status> Вы возможно путаете с JSON? там немного другая структура. У ЛКДС XML вроде соответствует требованиям Мелкософта. И я лично не совсем понимаю зачем каждую Status Name раскидывать в массив. Я их собираю в одну строку и кладу в ячейку базы с описанием неисправности. -------------------- Если ты ненавидишь – значит тебя победили.
На самом деле, жизнь проста, но мы настойчиво её усложняем. |
Текстовая версия | Сейчас: 29.3.2024, 7:00 |