Различия
Здесь показаны различия между двумя версиями данной страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
doc:jroboplc:modules:arcsvr [2021/08/23 08:29] denis [Параметры архивации сообщений] |
doc:jroboplc:modules:arcsvr [2021/11/05 13:36] (текущий) denis [Алгоритм архивации сообщений версии 2] |
||
|---|---|---|---|
| Строка 396: | Строка 396: | ||
| arcmes:sweepmes 2016 | arcmes:sweepmes 2016 | ||
| Данная команда, посылаемая модулю с именем ''arcmes'', удаляет все записи старше 2016 года включительно. | Данная команда, посылаемая модулю с именем ''arcmes'', удаляет все записи старше 2016 года включительно. | ||
| + | |||
| + | ===== Алгоритм архивации сообщений V2 ===== | ||
| + | Для работы по данному алгоритму необходимо пересоздать базу сообщений. | ||
| + | |||
| + | В таблице ''MESSAGES'' добавлены поля ''DTEND'' и ''DTACK'': | ||
| + | <code sql> | ||
| + | CREATE TABLE MESSAGES ( | ||
| + | IDM INTEGER NOT NULL, | ||
| + | DT TIMESTAMP, | ||
| + | DTEND TIMESTAMP, | ||
| + | DTACK TIMESTAMP, | ||
| + | IDMSG INTEGER, | ||
| + | IDTAG INTEGER, | ||
| + | IDUSER INTEGER, | ||
| + | IDPLACE INTEGER, | ||
| + | DATA VARCHAR(128), | ||
| + | ACT CHAR(1), | ||
| + | CLB INTEGER, | ||
| + | CLF INTEGER | ||
| + | ) | ||
| + | </code> | ||
| + | |||
| + | При работе в режиме ''version: 1'' поля ''DTEND'' и ''DTACK'' не используются. | ||
| + | |||
| + | При работе в режиме ''version: 2'' поля дат имеют следующее назначение: | ||
| + | * ''DT'' - дата наступления события | ||
| + | * ''DTEND'' - дата ухода события (перестает быть актуальным). Если ''null'', то сообщение считается актуальным. | ||
| + | * ''DTACK'' - дата подтверждения. Если ''null'', то сообщение считается не подтвержденным. | ||
| + | | ||
| + | При наступлении события в ''MESSAGES'' создается запись (сообщение), где ''DT'' содержит текущую дату, а ''DTEND'' и ''DTACK'' содержат null. | ||
| + | |||
| + | При уходе события в ''MESSAGES'' находится соответствующее актуальное сообщение с ''DTEND'' = null и прописывается текущая дата в ''DTEND''. | ||
| + | |||
| + | В ''DTACK'' значение прописывает scada-клиент. | ||
| + | |||
| + | Для удобства использования в scada-клиентах в базе данных имеются дополнительные метаобъекты: | ||
| + | * view MESMONITOR - выдает отсортированный список текущих сообщений (используется для мониторинга сообщений) <code sql> | ||
| + | CREATE VIEW MESMONITOR( | ||
| + | IDM, | ||
| + | ORD, | ||
| + | DT, | ||
| + | DTEND, | ||
| + | DTACK, | ||
| + | IDPLACE, | ||
| + | PLACENAME, | ||
| + | IDUSER, | ||
| + | USERNAME, | ||
| + | MESTEXT, | ||
| + | TAGTEXT, | ||
| + | DATA, | ||
| + | FULLTEXT, | ||
| + | CLB, | ||
| + | CLF) | ||
| + | </code> | ||
| + | * view MESVIEW - выдает отсортированный список всех сообщений (используется для просмотра архива) <code sql> | ||
| + | CREATE VIEW MESVIEW( | ||
| + | IDM, | ||
| + | DT, | ||
| + | DTEND, | ||
| + | DTACK, | ||
| + | IDPLACE, | ||
| + | PLACENAME, | ||
| + | IDUSER, | ||
| + | USERNAME, | ||
| + | MESTEXT, | ||
| + | TAGTEXT, | ||
| + | DATA, | ||
| + | FULLTEXT, | ||
| + | CLB, | ||
| + | CLF, | ||
| + | ACT) | ||
| + | </code> | ||
| + | |||
| + | * procedure SAVE_MESSAGE - сохраняет текстовое сообщение (используется для фиксации действий пользователя) <code sql> | ||
| + | create procedure SAVE_MESSAGE ( | ||
| + | MSGTEXT varchar(1024), | ||
| + | TAGTEXT varchar(1023), | ||
| + | DATATEXT varchar(128), | ||
| + | IDUSER integer, | ||
| + | IDPLACE integer, | ||
| + | CLB integer, | ||
| + | CLF integer) | ||
| + | returns ( | ||
| + | IDM integer, | ||
| + | IDMSG integer, | ||
| + | IDTAG integer) | ||
| + | </code> | ||
| + | |||
| + | |||
| + | |||