Страница 1 из 2

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

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

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

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

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

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

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

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

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

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

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

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

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

Мысль возникла при опыте использования подобного функционала в другом веб-конструкторе. Возможно использовать как-то суть шаблонов, в программировании я не силен, предложил только идею, насколько она будет реализуема и интересна для пользователей - решать соответственно, нашему разработчику и пользователям :) .

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

Добавлено: 21 июн 2016, 16:11
support
Спасибо за предложение и столь подробное описание. Подобные мысли у меня так же были. Я когда приступлю к разработке, задам дополнительные вопросы, возможно что то и получится сделать:)

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

Добавлено: 21 июн 2016, 16:16
alcompstudio
Отлично, всегда готов оказать помощь в пределах своей компетенции :)

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

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

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

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

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

Добавлено: 19 июл 2016, 06:11
Евгений
nikorn писал(а):У меня тоже возникало желание сделать это. Сейчас я это делаю с помощью пользовательских скриптов, но для пользователя, не знакомого с программированием, можно было бы это реализовать с использованием новой сущности - Шаблоны операций.
А вы не могли бы подсказать, как вы используете скрипты? Пишите прямо в базу хранимки? Или что-то дописываете в ПХП-коде самой системы?

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

Добавлено: 19 июл 2016, 08:42
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();
}

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

Добавлено: 19 июл 2016, 08:50
Евгений
Ага, понятно, спасибо за подсказку. А я немного с другой стороны пилю, делаю автоматизацию через хранимки и триггеры. Там своих отрицательных моментов хватает. Попробую сравнить эти два подхода.

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

Добавлено: 30 сен 2016, 09:52
dracul
Я вот тоже об этом думал. Так как мы используем систему также для учета компьютерных комплектующих, приходится часто добавлять, например, 16 планок памяти, которые отличаются только серийным номером. Вполне логично было бы реализовать возможность задать один раз все поля и указать 16 серийников, чтобы все это автоматически создалось.
Пока планирую сделать php скрипт для добавления множества однотипных записей.

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

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

У меня в некоторых сущностях есть шаблонная запись, в которой внутри свои вложенные шаблоны с максимально настроенными полями. Я их просто копирую пачкой в нужное место, а потом корректирую поля, которые имеют особые значения

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

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

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