...

Запуск процесса кнопкой

Тема в разделе "Вопросы по функционалу", создана пользователем govorov, 3 апр 2017.

  1. govorov

    govorov New Member

    Добрый день!
    ELMA Standart 3.10.7
    Стоит задача упрощения запуска процесса по возможности. Стандартный запуск когда надо выбрать нужный процесс из списка для пользователей тяжеловат ввиду большого числа процессов.

    Была добавлена кнопка на форму просмотра возможности (скрипт подсмотрен с https://www.elma-bpm.ru/kb/article-23.html). Скрипт успешно отрабатывает и запускает процесс.

    После завершения скрипта страница остается без изменений. Нужна какая-то обратная связь для пользователей.
    Возможные варианты:
    1. Перейти на созданную задачу по процессу (создается для инициатора).
    2. Перейти к списку задач.

    Подскажите пожалуйста как это сделать из скрипта?
     
  2. govorov

    govorov New Member

    Можно как вариант изменять состояние самой кнопки (например цвет), но не знаю как получить доступ к кнопке из скрипта ?
     
  3. pushkarev

    pushkarev Active Member

    Если я правильно понял, вы в конструкторе форм добавили кнопку, по нажатию на которую происходит выполнение сценария запуска процесса.
    К сожалению из сценария возможности, выполняемого по нажатию на кнопку, вы не сможете перебросить пользователя на другую форму, архитектура не дает такое сделать.
    Есть 2 варианта:
    1. Разрабатывать свою точку расширения для возможности, со своим web модулем и контроллером, и запуск процесса делать в нем. Но это трудоемкое и сложное решение, требующее навыков написания модулей.
    2. Добавить в возможность поле со ссылкой на задачу процесса, саму ссылку формировать в сценарии нажатия на вашу кнопку запуска процесса и присваивать этой переменной. Поле сделать только для чтения и настроить чтобы скрывалось если пустое. Тогда пользователь после нажатия на кнопку увидит ссылку на первую задачу процесса и сможет в 1 клик перейти. Возможно с помощью JavaScript, можно так же на событие появления значения в этом поле выполнить редирект на задачу процесса (но точно не знаю, не так силен в JavaScript).
     
    1 это нравится
  4. govorov

    govorov New Member

    Спасибо за ответ. Попробую второй вариант.
     
    1 это нравится
  5. Евгений

    Евгений New Member

    Ссылка на запуск процесса.
    У каждого процесса свой номер
    <a class="elementViewType" style="width: 160px;" action-provider="StartProcessLinkTypeProvider" action-data="{EleWise.ELMA.Model.Entities.Workflow.ProcessHeader-50,Context:{}}">Название процесса </a>
     
  6. dreyman_g

    dreyman_g New Member

    Мы пользуемся следующим кодом:

    <form action="/Processes/ProcessHeader/Start" enctype="multipart/form-data" id="StartProc__281" method="post">
    <input id="ProcessHeaderId" name="ProcessHeaderId" type="hidden" value="281" />
    <div style="width:450px">
    <input type="submit" value="Запустить процесс согласования проекта договора" />
    </div>
    <script type="text/javascript">
    $('#StartProc__281').submit(function (event) {
    var form = $('#StartProc__281');
    if (form.data('submitted')) {
    event.preventDefault();
    return false;
    }
    if (form.valid()) {
    $('#StartProc__281').data('submitted', 1);
    elma.openPleaseWait(true);
    }
    });
    </script>
    </form>

    <script type="text/javascript">
    //<![CDATA[
    if (!window.mvcClientValidationMetadata) { window.mvcClientValidationMetadata = []; }
    window.mvcClientValidationMetadata.push({"Fields":[],"FormId":"StartProc__281","ReplaceValidationSummary":false});
    //]]>
    </script>

    , где 281- ID процесса. Процесс открывается сразу и никаких лишних действий.
     
    Последнее редактирование: 4 апр 2017
    1 это нравится
  7. govorov

    govorov New Member


    К сожалению, не получается запустить ваш пример, страница просто перегружается после небольшого ожидания. Код размещен на форме возможности в поле типа "HTML разметка". Если смотреть отладчиком то строка скрипта $('#StartProc__281').submit(function (event) { выполняется, а вот точка останова внутри функции при сабмите не страбатывает.
     
    1 это нравится
  8. govorov

    govorov New Member

    Разместил скрипт в Razor представлении поля, все заработало. Спасибо!
     
  9. govorov

    govorov New Member



    А параметры в процесс можно подсунуть? Нужно передать объект возможность из которого вызывается процесс.
     
  10. Мы вот так делали. На форму просмотра добавляли панель, в панель рейзор код:

    @using EleWise.ELMA.Services;

    @using EleWise.ELMA.Runtime.Settings;

    @{var applicationBaseUrl = Locator.GetServiceNotNull<CommonSettingsModule>().Settings.ApplicationBaseUrl; }

    @using (var data = new ObjectViewData(this))


    {



    <form enctype="multipart/form-data" action="@applicationBaseUrl/Processes/ProcessHeader/RunByWebQuery/a3214c5d-63aa-42c4-9307-538fb6858e7e?Contract.Id=@(Model.Id)&CreateAddContract=True" method="POST">

    <table width="100%" border="0" cellspacing="1" cellpadding="4" height=30>

    <td><input type="Submit" value="Наименование кнопки которое будет отображаться на форме" name="Run_Workflow"></td>

    </form>

    }
    a3214c5d-63aa-42c4-9307-538fb6858e7e - токен процесса, у него должна стоять галка post запрос при публикации
    Contract.Id, CreateAddContract - контекстные переменная в процессе
     
  11. govorov

    govorov New Member

    В итоге подсмотрели тот запрос который отправляет система из панели запуска процесса и сделали по аналогии:

    <div id="StartProc">
    <form action="/Processes/ProcessHeader/Start" enctype="multipart/form-data" id="StartProc" method="post">
    </form>
    <form action="/Workflow/WorkflowInstance/StartRoute" id="StartRouteRKO" method="post" name="StartRouteRKO">
    <input id="ObjectTypeRKO" name="ObjectType" value="7af9ad76-a111-466b-8b57-3b76b5504182" oldvalue="7af9ad76-a111-466b-8b57-3b76b5504182" type="hidden">
    <input id="RelationTypeRKO" name="RelationType" value="OneToOne" oldvalue="OneToOne" type="hidden">
    <input name="Objects[0]" value="@LeadID" oldvalue="91080" type="hidden">
    <input id="ProcessHeader_IdRKO" name="ProcessHeader.Id" value="10" oldvalue="6" type="hidden">
    <input id="ContexVarCountRKO" name="ContexVarCount" value="1" type="hidden">
    <input id="ContextVarRKO" name="ContextVar" value="07035569-7495-432a-b168-ca2d2e15362e" type="hidden">
    <input id="ContextVar_validateRKO" name="ContextVar_validate" value="" type="hidden">
    <input type="submit" value="Подключить РКО" />
    </form>
    </div>
     
  12. yambr

    yambr Member

    не усложняйте пожалуйста - вот статья в базе знаний https://www.elma-bpm.ru/kb/article-414.html

    самый простой вариант в одну строчку запустить Get запросом - ссылку можно положить прямо под кнопку и будет вам счастье
     

Поделиться: