Данная статья продолжает цикл публикаций по использованию связки 1С + PostgreSQL(PostgREST) + SimpleUI. Предыдущие тут: //infostart.ru/public/1217831/ и тут: //infostart.ru/public/1234475/
Введение
Данный подход к организации чата и задач имеет рабочее название «чат с объектами» - это попытка художественного переосмысления интерфейса взаимодействия человека и корпоративной ERP. Дело в том, что так или иначе контроль бизнес процессов чаще всего происходит через те же мессенджеры (Whatsapp, Telegram и т.д.) или какие то десктопные интерфейсы. Т.е. где то в ERP(CRM или другой системе) есть красивые блок схемы бизнес-процессов, но вся информация собирается все равно через какие то каналы взаимодействия и от их удобства зависит эффективность и прозрачность системы контроля бизнес-процессов. Я интегрировал процессы Simple UI с задачами и чатом, чтобы можно было работать прямо из ленты, чтобы вся инфа собиралась прямо в объектах задач – об этом далее. Одним словом чат и задачи это новый способ доставки и контроля выполнения задач на устройства.
Пара слов для понимания что такое «процессы Simple UI» и зачем я засунул их в задачи. SimpleUI – это конструктор и среда выполнения простых задач, т.е. организации форм ввода на устройствах под андроид – телефоны, ТСД и т.д. Часто процесс равен какому бизнес-процессу. Например «принять заказ», «выполнить контроль оборудования» и т.д. Обычно они запускаются из основного меню. Сейчас можно отправлять процессы с конкретными данными инкапсулированные прямо в самих сообщениях – таким образом описание задачи, возможные статусы выполнения этой задачи, исходные данные (например номер заказа, вид цен, контрагент), процесс который должен запуститься при клике на задачу и результат работы этого процесса(данные которые ввел пользователь) – это все упаковывается в один объект-сообщение или объект-задачу.
Новый функционал помимо стандартной инфраструктуры организации чатов и списков задач включает в себя следующие возможности:
• Запуск процессов Simple UI прямо из задач с начальными данными. Это могут быть простые одноэкранные объекты(например страничка описания задачи, анкета, карточка контрагента и т.д.) или сложные многоэкранные процессы – например заказ клиента и т.д.
• Упаковка данных процесса прямо в задачу. Т.е. то что навводил пользователь упаковывается в JSON и хранится в строчке в задаче
• Прием задач из чата и форматирование возможных статусов задачи индивидуально – простой форматной строкой в тексте сообщения, например {Сделал|Есть затруднения|Отказ}
• Создание сообщений и задач прямо из процессов – например чтобы не писать в чат о завершении задачи а делать это автоматически, или напрмиер чтобы поставить следующую задачу или например чтобы просто сделать свою форму и логику создания задач и сообщений
• Установка текущих статусов задач из процессов – процессы сами отмечают статусы задач в соответствии с логикой
Таким образом это взаимосвязанное соединение 3-х сущностей :
Базовая инфраструктура доставки сообщений и возможности.
Базовая инфраструктура доставки сообщений базируется на PostgreSQL + PostgREST – т.е. сообщения и задачи обмениваются не напрямую с 1С а через прослойку в виде облачной СУБД. Обмен происходит через REST API с помощью PostgREST.
Что касается транспорта сообщений и интерфейса то тут реализованы стандартные возможности:
• Отложенная отправка и доставка
• Синхронизация в фоне чата и задач
• Синхронизация чата и задач по разным устройствам одного аккаунта
• Доставка всем (адресат all) или конкретному пользователю
• Оповещение о задачах, показ невыполненных
В целом это стандартный набор функционала для подобных задач. Это все можно собрать на свой инфраструктуре или протестировать на облаке по умолчанию.Например если нет связи то сообщение будет доставлено позже - оно отмечено цветом.
Статусы и отправка задач в чате
Сообщения с задачами отличаются от обычных сообщений тем, что в них сразу передается набор статусов задачи. Например название задачи
"Проверить комплектность щитового оборудования{*Выполнил|В процессе|~Отмена}"
создаст вот такие кнопки-статусы в задаче как на картинке. Знак «*» перед названием статуса означает что задача выполнена(кнопка зеленая) , «~» - отмена (кнопка красная). В обоих случаях задача уберется из списка задач как завершенная.
Создание задач из чата
В чате можно написать сообщение со статусами (как в примере выше) и тогда сообщение будет восприниматься как задача, которую можно принять или отказаться. Например несколько исполнителей и кто то один берет задачу. Как только он нажимает кнопку "Принять" возникает новая задача.
Создание сообщений из процессов
Из процессов можно создавать сообщения чата. Можно сделать автоматические сообщения при каких то событиях («Прибыл на место», «Начал принимать заказ», «Завершил приемку» и т.д.) т.е. своеобразное логирование событий в чате. Работать очень просто – одна команда. Можно сделать просто свою форму для отправки сообщений.
Создание задач и изменение статусов из процессов
Также из процессов можно создавать задачи – простой командой. Например созадвать задачу в зависимости от того как завершится процесс.
И самое главное – из процессов можно устанавливать статус задачи! Т.е. взял задачу – открылась форма (об этом далее) процесса - что то сделал – программа поставила статус в соответствии с логикой
Процессы(объекты) в ленте чата и задачах
В сообщение или задачу можно вложить название процесса который будет открываться по клику (поле action). Но это не все. Можно также вложить начальные данные которыми будет инициализирован процесс. В Simple UI все устроено просто – есть «Процесс»(набор экранов по сути) и есть «Переменные» (произвольная куча переменных). Переменные задают все данные в процессе – поля, таблицы, диаграммы и т.д. И они же управляют логикой – переходами между экранами и т.д. Так вот, в запись сообщения или задачи можно добавить JSON строку с переменными (поле data). Как минимум для того чтобы в открывшейся форме уже было что то написано.
Например мы отправляем сотруднику заполнить «лист проверки» на конкретный объект. По сути это анкета с галками и может с какими то еще полями. Анкета по конкретному объекту – документу. Он должен отобразиться на форме. Значит добавляем его в переменные.
Но это еще не все. Сотрудник открывает анкету и допустим проставил какие то галки. Данные, введенные в процессах записываются туда же в поле data. Т.е. мы взяли переменные, попользовались, добавили свои и записали JSON-объект туда же. Это все происходит на автомате при закрытии процесса сохраняются все переменные. И соответственно результат забираем из этого же поля.
Таким образом тут реализован принцип инкапсуляции в задаче данных, логики обработки и представления данных и статусов.
Не все задачи такие простые как «анкета» и иногда могут понадобиться например записать таблицу. Для этого в новом релизе расширен набор логики для работы с JSON (*тут я имею ввиду так называемую офф-лайн работу без обращения к серверу 1С. Т.е. в общем то можно все это делать и через прямое обращение к 1С через веб-сервер в режиме он-лайн в том числе например создать переменные JSON c массивами силами платформы 1С:Предприятее, но зачем дергать 1С если можно сделать это на устройстве, к тому же это может быть в режиме без связи (off-line))
Рассмотрим например процесс «Пополнение торговой точки) (или какой ни будь заказ клиента или что то еще где есть таблица данных). Очевидно тут напрашивается массив JSON чтобы упаковать строчки документа. Поэтому теперь есть такие команды JSON:
- Создать переменную JSON – создается при начале работы
- Создать маccив JSON– создается при начале работы
- Добавить объект JSON в массив JSON – так как объект JSON это строка, то добавление – это добавление строки
- Записать переменную JSON в объект JSON – добавили сделанный массив в общий объект по заказу
- Записать переменную JSON в Переменные – а это уже конечная цель – добавляем полученные данные в кучу переменных которые запишутся потом в поле data
Вот так это выглядит в конкретном процессе который есть в демо-базе:
Вот так сохраняется в data:
Обмен с 1С
1С обменивается с СУБД посредством API интерфейса PostgREST там все просто и скучно – в Postgre есть табличка с задачами и табличка с чатом соответственно 1С пишет/принимает из этих таблиц. Примеры обмена есть в демо-базе. Может потребоваться чуть более сложное взаимодействие (например запросы с отбором) – это все есть в инструкции к PostgREST(она небольшая) Для наглядности даже «лента чата» в 1С.
Установка
Для работы нужно скачать приложение Simple UI из Google Play и поставить из Магазина конфигураций вот эту конфигурацию
Возможно будет полезным демо база где есть не только обработка Чат (в которой все примеры взаимодействия), но и конфигурация для Simple UI ("Пример работы с задачами и чатом") в которой реализованы примеры из статьи. Ее можно скачать в комплекте разработчика в основной статье: //infostart.ru/public/1153616/
Для развертывания на своей инфраструктуре нужна база PostgreSQL+ PostgREST установить которую можно в облаке или на своем сервере. Про это написано тут //infostart.ru/public/1217831/. В базе нужно создать необходимые объекты для чата и задач – таблицы для чата и задач а также необходимые хранимые процедуры (SQL команды содержатся в файлике SQL_необходимые_объекты_SipmleUI+MicroWMS+Чат и Задачи.txt – их надо просто выполнить.
Или можно просто пробовать это на облаке, которое прописано по умолчанию в приложении и демо-базе.