Глобальные переменные в Бизнес-процессе

Рейтинг: 18.9225  
На голосовании
Предложил Сычев Александр 27.08.2015 08:52:38

Глобальные переменные в Бизнес-процессе

Посмотрел вебинар от 26.08.15. Там было предложение от одного из слушателей о глобальных переменных, которое Алексей Кирсанов не понял.
Я пожалуй разовью тему, так как сам думал об этом.
Когда БП много, очень часто возникает необходимость сохранять результат работы, или какие-либо служебные данные, которые могут понадобиться в другом БП если наступит событие их запуска. Все это, как в рамках внутри CRM, так и всего Битрикс24. Тут либо вариант не завершать БП, чтобы сохранить переменную, либо плодить поля в уникальных списках. Было бы здорово, если иметь возможность просто сохранять результат в глобальную переменную которая продолжает жить после завершения БП. Иметь возможность производить с ней арифметические операции из других БП, дополнять, изменять и всегда иметь возможность посмотреть накопленный результат. Когда не нужно - удалить. Вариантов использования масса. Основная мысль я думаю ясна.

Я вижу это примерно так. Глобальная переменная(ГП) создается\изменяется\удаляется из БП через отдельный блок (ГП) в дизайнере БП. В блоке сразу отображаются все ГП. Время жизни не ограниченно, отдельное поле в БД. Очень хорошо бы было иметь возможность записи переменных типа структура.

Рейтинг: 0.4023  
Пучка Екатерина 27.08.2015 12:20:40
Действительно, идея очень хорошая, и было жаль, что её не поняли на вебинаре (тоже хотела написать об этом здесь, но т.к. это не моя идея, не стала это делать). Глобальных переменных очень недостаёт!
Рейтинг: 0  
Будкин Валентин 30.08.2015 13:23:03
Для подобного было бы достаточно возможности делать внешние вебхуки, как, например в Slack - https://api.slack.com/outgoing-webhooks

Тогда можно было бы хранить эти значения во внешних системах.
Рейтинг: 0  
Янжула Антон 07.09.2015 11:26:23
Константы в БП относятся к шаблону БП, можно применить этот механизм как глобальные переменные. Разве нет?
Рейтинг: 0  
Сычев Александр 07.09.2015 11:33:16
Антон приветствую!
Да, константы относятся к шаблону БП. Но, они "живут" пока БП не завершился, и не доступны из других БП.
Рейтинг: 0  
Куклин Евгений 07.09.2015 12:30:04
Но, они "живут" пока БП не завершился
Александр, по-моему, вы про переменные, а не про недавно появившиеся в бп "константы". Переменные да, живут только вместе с экземпляром процесса, константы же относятся к шаблону бп, любые изменения констант в шаблоне в теории должны учитываться во всех уже запущенных процессах (в теории - так как сам этот функционал не щупал).
Рейтинг: 0  
Сычев Александр 07.09.2015 13:07:03
Александр, по-моему, вы про переменные, а не про недавно появившиеся в бп "константы". Переменные да, живут только вместе с экземпляром процесса, константы же относятся к шаблону бп, любые изменения констант в шаблоне в теории должны учитываться во всех уже запущенных процессах (в теории - так как сам этот функционал не щупал).
Здравствуйте Евгений!
Да, шаблоны прикрепляются к конкретному БП и при их изменении можно быстро поменять параметры. Но, они прикрепляются к конкретному(одному единственному) шаблону БП.
Попробовал обратиться к значению константы напрямую(в списке константы только внутренние), пробовал и при запущенном БП(из которого пробовал взять переменные и константы) - никак не получилось.
Вообще в FAQ явным образом об этом не указано, но есть намек, что сохранять данные, если они нужны после работы БП - нужно " если необходимо куда-то сохранять переменную, например файл, который пользователь должен добавить на определенном этапе, то следует использовать действие Изменение документа". Источник: http://dev.1c-bitrix.ru/learning/course/?COURSE_ID=57&LESSON_ID=3816&LESSON_PATH=5442.5446.5042.3816

Так что, даже напрямую обратиться к переменной или константе из другого БП не получается. А шаблоны прикрепляются к конкретному БП. Кстати, возможность прикреплять шаблон сразу к группе БП - это тоже идея.
Рейтинг: 0.2454  
Куклин Евгений 07.09.2015 13:36:22
Да, шаблоны прикрепляются к конкретному БП и при их изменении можно быстро поменять параметры. Но, они прикрепляются к конкретному(одному единственному) шаблону БП.
Александр, я вас местами не совсем понимаю. Шаблоны не прикрепляются к БП, это экземпляры БП создаются по шаблонам БП, а какие ещё у вас там фигурируют шаблоны - я не понял.
Из описания вашей задачи
Тут либо вариант не завершать БП, чтобы сохранить переменную, либо плодить поля в уникальных списках.
"Уникальные" списки вас не устраивают, поэтому самый очевидный вариант
Вообще в FAQ явным образом об этом не указано, но есть намек, что сохранять данные, если они нужны после работы БП - нужно " если необходимо куда-то сохранять переменную, например файл, который пользователь должен добавить на определенном этапе, то следует использовать действие Изменение документа".
я даже не затрагивал.
Так что, даже напрямую обратиться к переменной или константе из другого БП не получается. А шаблоны прикрепляются к конкретному БП. Кстати, возможность прикреплять шаблон сразу к группе БП - это тоже идея.
Просто нет интерфейсного решения (в виде какого-нибудь действия, например).
API есть, если потребность очень большая, можно воспользоваться им (методы CBPWorkflowTemplateLoader). Но не могу сказать, что это удобно и документации нет, скорее всего.

Ещё как вариант вам, более простой - я для хранения каких-либо глобальных вещей для БП использую COption, гораздо проще устанавливать и считывать, нежели константы БП.

Я о коробке.
Рейтинг: 0  
Сычев Александр 07.09.2015 14:19:45
Александр, я вас местами не совсем понимаю. Шаблоны не прикрепляются к БП, это экземпляры БП создаются по шаблонам БП, а какие ещё у вас там фигурируют шаблоны - я не понял.
"Хоть ежика об пенёк, хоть пеньком по ежику - всё ежику как-то не ладно". Я ваш ответ рассматривал исключительно из контекста задачи. Доступа и к константам из разных БП под одним шаблоном (интерфейсного доступа) нет.  

"Уникальные" списки вас не устраивают, ...
Прямого интерфейсного доступа тоже нет. Да хочется цивилизованного подхода.

то следует использовать действие Изменение документа".
я даже не затрагивал.
Прямого интерфейсного доступа из других БП я туда опять же не имею.

Просто нет интерфейсного решения (в виде какого-нибудь действия, например).
Именно об этом и речь.

API есть, если потребность очень большая, можно воспользоваться им (методы CBPWorkflowTemplateLoader). Но не могу сказать, что это удобно и документации нет, скорее всего.

Ещё как вариант вам, более простой - я для хранения каких-либо глобальных вещей для БП использую COption, гораздо проще устанавливать и считывать, нежели константы БП.
По правде говоря еще даже не садился за изучение их API. Потребность не сильная, но если бы была интерфейсным образом реализована - использовал бы.
Спасибо за прямую ссылки к нужному классу. Если остро понадобиться - обращусь к ней.  
Рейтинг: 0  
Афанасьев Арсений 13.10.2015 09:45:09
Александр, по-моему, вы про переменные, а не про недавно появившиеся в бп "константы". Переменные да, живут только вместе с экземпляром процесса, константы же относятся к шаблону бп, любые изменения констант в шаблоне в теории должны учитываться во всех уже запущенных процессах (в теории - так как сам этот функционал не щупал).
а получается если меняешь константу то меняется и запущенные уже процессы - т.е. допустим сотрудник ушел в отпуск поменял константу с сотрудника Х на сотрудника Y и запущенные в данный момент процессы тоже поменяли данную контанту?
Битрикс можете данную ситуацию пояснить?

ну и про глобальную переменную очень интересно... можно бы было не контантами задавать а ГП тогда.
Рейтинг: 0  
Б (Obcom) Виталий 19.03.2016 20:08:42
Ещё как вариант вам, более простой - я для хранения каких-либо глобальных вещей для БП использую COption, гораздо проще устанавливать и считывать, нежели константы БП.
думаю самый подходящий вариант в данной ситуации (опять же, кто в коробке)