Расширенный функционал - пользовательская автоматизация (программирование) действий

Пишите ваши предложения здесь.
Аватара пользователя
alcompstudio
Спонсор
Спонсор
Сообщения: 1519
Зарегистрирован: 03 янв 2016, 20:42
Имя: Александр
Откуда: Мир

Расширенный функционал - пользовательская автоматизация (программирование) действий

Сообщение alcompstudio »

Предлагаю внести в план (только не знаю какой получится версии Руководителя :) ) возможность частичной автоматизации в работе с приложением.

Для чего нужно:

Например, есть структура приложения:

Проекты (есть поля со списком, например - Статус: в работе, завершен)
- Задания (есть поля со списком, например - Статус: в работе, завершен)
-- Работа по заданиям (включает числовые поля - стоимость работы, дату выполнения, Статус: включено в счет, оплачено по счету)
Счета (есть связанные записи с Проектами и Работа по заданиям, Статус: новый, оплачен)
- Приход (делается запись, например, когда происходит оплата по Работе по заданиям)

Бизнес-процессы (примерно)

1. Создается проект
2. В Проекте создается задание.
3. В Задании (ях) отмечаются Работы по заданиям - ответственными сотрудниками.
4. По окончании создается запись в сущности Счет.
5. Привязываются в Счет записи Проект
6. Привязываются в Счет записи Работа по заданиям
7. Создается запись Приход (когда по счету получена оплата).
8. Записи Счет поле статус присваивается значение "оплачен"
9. Записям Работа по заданиям (что подвязаны к сущности Счет) поле статус присваивается значение "оплачено по счету".
10. Записи Проект поле статус присваивается значение "завершен".

Все это делается вручную, т.е. тратится некоторое время на создание/редактирование/обновление записей. При этом, нужно искать нужные сущности и нужные записи отдельно.

Что предлагается:

Сделать автоматизацию (пользовательское программирование) некоторых действий на создание/редактирование/обновление связанных (или дочерних) записей. Так, можно автоматизировать события, начиная с п.4 по п.10 указанного примера и сделать указанную работу в 2 этапа: на событие "Сформировать счет" (автоматизируются действия пп. 4-6) и "Оплатить счет и завершить проект" (пп.7-10).

Т.е. в вышеуказанном случае создается в конфигурации сущности определенные действия с записями и их полями Например, в сущности Работа по заданиям назначается "кнопка/ссылка" с наименованием "Сформировать счет", а далее выбирается для какой сущности какое действие сделать. Можно использовать что-то подобное Шаблонам в дополнении - т.е. заранее заполнить поля, чтобы при автоматизации уже или создавалась запись с предустановленными значениями или значения полей обновлялись. Предполагается пока 2 вида событий - "добавить новую запись" и "обновить существующие записи"). Тут можно расположить вкладку с пользовательской автоматизацией:
Изображение

В указанном случае - в информационном интерфейсе сущности Работа по заданиям отмечаются нужные записи и по нажатию на "Сформировать счет" - автоматически создается запись в сущности Счета с предварительно заполненными полями, назначенными в разделе "Пользовательская автоматизация" (сущности Работа по заданиям) данными и уже подвязанными записями из сущности Работа по заданиям и сущности Проекты.
Можно как-то реализовать с использованием меню действий с записями:
Изображение

Подобное делается и для действия "Оплатить счет и завершить проект" - т.е. по нажатию на соответственную кнопку/ссылку - происходит одновременное (или последовательное) программное выполнение действий, указанных в пп. 7-10.
Все это должно действовать только со связанными и/или дочерними/родительскими записями созданных сущностей.
Думаю, это в значительной степени должно сэкономить время на обработку (обновление/создание) данных сразу в нескольких логически связанных сущностях. Вышеуказанный пример - только частное из возможных перспектив данного функционала, уверен, каждый найдет для себя что-то в нем полезное для реализации своих бизнес-процессов и комфорта в использовании веб-приложения.

Мысль возникла при опыте использования подобного функционала в другом веб-конструкторе. Возможно использовать как-то суть шаблонов, в программировании я не силен, предложил только идею, насколько она будет реализуема и интересна для пользователей - решать соответственно, нашему разработчику и пользователям :) .
Аватара пользователя
support
Техническая поддержка
Сообщения: 7661
Зарегистрирован: 19 окт 2014, 18:22
Имя: Харчишин Сергей
Откуда: Крым, Евпатория

Re: Расширенный функционал - пользовательская автоматизация (программирование) действий

Сообщение support »

Спасибо за предложение и столь подробное описание. Подобные мысли у меня так же были. Я когда приступлю к разработке, задам дополнительные вопросы, возможно что то и получится сделать:)
Аватара пользователя
alcompstudio
Спонсор
Спонсор
Сообщения: 1519
Зарегистрирован: 03 янв 2016, 20:42
Имя: Александр
Откуда: Мир

Re: Расширенный функционал - пользовательская автоматизация (программирование) действий

Сообщение alcompstudio »

Отлично, всегда готов оказать помощь в пределах своей компетенции :)
Аватара пользователя
nikorn
Сообщения: 252
Зарегистрирован: 02 апр 2016, 22:26
Имя: Корняков Никита
Откуда: РФ, Ярославль
Организация: Тяжмаштрейд
Контактная информация:

Re: Расширенный функционал - пользовательская автоматизация (программирование) действий

Сообщение nikorn »

У меня тоже возникало желание сделать это. Сейчас я это делаю с помощью пользовательских скриптов, но для пользователя, не знакомого с программированием, можно было бы это реализовать с использованием новой сущности - Шаблоны операций.

Порядок действий пользователя по подготовке шаблона операции мог бы быть таким:
1) Создается экземпляр шаблона операции
2) В шаблон операции добавляются записи по схеме Объект->Действие (например, Сущность/Поле/Значение -> Добавить/Удалить/Изменить
3) В нужный момент нажимается кнопка "Запустить"

Главную проблему я сейчас вижу в создании внутренне непротиворечивых шаблонов. Чтобы при исполнении шаблона операции не возникало конфликтов, препятствующих успешному завершению всей транзакции. При этом, конечно, должна быть возможность откатить все к исходному состоянию.
Аватара пользователя
Евгений
Сообщения: 398
Зарегистрирован: 11 июл 2016, 13:21
Имя: Евгений
Откуда: Петропавловск-Камчатский

Re: Расширенный функционал - пользовательская автоматизация (программирование) действий

Сообщение Евгений »

nikorn писал(а):У меня тоже возникало желание сделать это. Сейчас я это делаю с помощью пользовательских скриптов, но для пользователя, не знакомого с программированием, можно было бы это реализовать с использованием новой сущности - Шаблоны операций.
А вы не могли бы подсказать, как вы используете скрипты? Пишите прямо в базу хранимки? Или что-то дописываете в ПХП-коде самой системы?
Аватара пользователя
nikorn
Сообщения: 252
Зарегистрирован: 02 апр 2016, 22:26
Имя: Корняков Никита
Откуда: РФ, Ярославль
Организация: Тяжмаштрейд
Контактная информация:

Re: Расширенный функционал - пользовательская автоматизация (программирование) действий

Сообщение nikorn »

У меня написана программка на PowerShell для Windows, которая напрямую соединяется с базой mySQL, добавляет новую запись, заполняет самые необходимые поля (например, дату, контрагента и содержание обращения). Потом остается просто зайти в Руководитель и добавить необязательную информацию

Кусочек кода, отвечающий за запись в базу:

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

$NowU = Get-Date -Date $Now.AddHours($timeshift) -UFormat %s
$enc = [system.Text.Encoding]::UTF8
$a = $enc.GetString($enc.GetBytes($folder1))
$b = $enc.GetString($enc.GetBytes($content))
[void][Reflection.Assembly]::Load("MySql.Data, Version=6.7.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d")
#Database Connection String
$ConnectionString = 'server=' + $server + ';database=' + $database + ';user id=' + $user + ';password=' + $password + ';charset=' + $charset
#Database Query
$QueryString_ = 'insert into app_entity_' + $entity + ' (date_added, created_by, field_240, field_251, field_243) values ("' + $NowU + '", "' + $userid + '", "' + $NowU + '", "' + $a + '", "' + $b + '")'
$connection = New-Object MySql.Data.MySqlClient.MySqlConnection ($ConnectionString)
$connection.Open()
if ($connection.State -eq [System.Data.ConnectionState]::Open) {
	$command_ = New-Object MySql.Data.MySqlClient.MySqlCommand ($QueryString_, $connection)
	#$StringBuilder = New-Object System.Text.StringBuilder # Нужно ли?
	#Run the query
	$command_.ExecuteNonQuery()
	#Close the Connection
	$connection.Close();
}
Аватара пользователя
Евгений
Сообщения: 398
Зарегистрирован: 11 июл 2016, 13:21
Имя: Евгений
Откуда: Петропавловск-Камчатский

Re: Расширенный функционал - пользовательская автоматизация (программирование) действий

Сообщение Евгений »

Ага, понятно, спасибо за подсказку. А я немного с другой стороны пилю, делаю автоматизацию через хранимки и триггеры. Там своих отрицательных моментов хватает. Попробую сравнить эти два подхода.
dracul
Сообщения: 28
Зарегистрирован: 12 фев 2016, 00:14
Имя: Михаил
Откуда: Москва

Re: Расширенный функционал - пользовательская автоматизация (программирование) действий

Сообщение dracul »

Я вот тоже об этом думал. Так как мы используем систему также для учета компьютерных комплектующих, приходится часто добавлять, например, 16 планок памяти, которые отличаются только серийным номером. Вполне логично было бы реализовать возможность задать один раз все поля и указать 16 серийников, чтобы все это автоматически создалось.
Пока планирую сделать php скрипт для добавления множества однотипных записей.
Аватара пользователя
nikorn
Сообщения: 252
Зарегистрирован: 02 апр 2016, 22:26
Имя: Корняков Никита
Откуда: РФ, Ярославль
Организация: Тяжмаштрейд
Контактная информация:

Re: Расширенный функционал - пользовательская автоматизация (программирование) действий

Сообщение nikorn »

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

У меня в некоторых сущностях есть шаблонная запись, в которой внутри свои вложенные шаблоны с максимально настроенными полями. Я их просто копирую пачкой в нужное место, а потом корректирую поля, которые имеют особые значения
dracul
Сообщения: 28
Зарегистрирован: 12 фев 2016, 00:14
Имя: Михаил
Откуда: Москва

Re: Расширенный функционал - пользовательская автоматизация (программирование) действий

Сообщение dracul »

Мы так и делаем. Но вот мы получили 3 сервера, в каждом по 16 планок памяти. Всего 48 планок. Можете представить, сколько уходит времени на заведение этого добра даже с помощью копирования. Ведь надо потом вручную к каждой записи поменять серийник.

А я думаю сделать так: в форму записываются значения всех полей, которые одинаковые для всех записей, указывается кол-во записей, а в поле серийников указываются сразу все 48 серийников через пробел, например. Скрипт создает 48 одинаковых записей, подставляя в каждую новую запись очередной серийник.
Ответить