Шаблон одобрения документов App Maker: автоматически добавлять утверждающих по умолчанию - PullRequest
0 голосов
/ 09 июля 2019

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

Я использую код, разработанный Дарпаном в этом посте , но у меня возникают проблемы с маршрутами утверждения документов. Теперь мне нужно решить ту же проблему, которую прокомментировал @ alep . Используя код, 2 этапа одновременно отправляют электронное письмо обоим утверждающим. Мне нужно, чтобы утверждающий 1 сначала получил его, а затем отправил его утверждающему 2, как это указано в шаблоне утверждения документации по умолчанию.

Подтверждающий 1 должен быть текущим, а не оба утверждающих.

У кого-нибудь есть идеи?

if (requestDs.item.WorkflowStages.length === 0) {
    requestDs.relations.WorkflowStages.createItem(function() {
    var createDatasource = requestDs.relations.WorkflowStages.relations.Approvers.modes.create;
    var draft = createDatasource.item;
    draft.Email = 'darpan.sanghavi@abc.com';
    draft.Name = 'Darpan Sanghavi';          


    createDatasource.createItem(function(createdRecord) { });

    });      

     requestDs.relations.WorkflowStages.createItem(function() {
    var createDatasource = requestDs.relations.WorkflowStages.relations.Approvers.modes.create;
    var draft = createDatasource.item;
    draft.Email = 'darpan.sanghavi@xyz.com';
    draft.Name = 'Darn Alarm';          


    createDatasource.createItem(function(createdRecord) { });
    app.closeDialog();

    }); 

}

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

Идея состоит в том, чтобы автоматически включать утверждающего 1, когда пользователь не может его изменить. И утверждающий 2 добавляется вручную пользователем. Пример:

    if (requestDs.item.WorkflowStages.length === 0) {

          requestDs.relations.WorkflowStages.createItem(function() {
      var createDatasource = requestDs.relations.WorkflowStages.relations.Approvers.modes.create;
    var draft = createDatasource.item;
    draft.Email = 'employee@abc.com.br';
    draft.Name = 'Employee';
    createDatasource.createItem(function(createdRecord) { });

            });

requestDs.relations.WorkflowStages.createItem(function() {


     app.closeDialog();


  }); 

Aprover 1 автоматически + Approver 2 Manual:
enter image description here
Оба остаются текущими:
enter image description here

Когда мы добавляем 2 утверждающих вручную, первый является текущим, а второй удерживается. Я не понимаю, почему это работает вручную, но при добавлении утверждающего автоматически все помечаются как текущие.

Я думаю, что решение в коде ниже, но я еще не сделал хорошо.

RequestManagementPrivate / ** * Обновление списка утверждающих запроса, отмечающих тех, кто в настоящее время * отвечает за утверждение со статусом Pending. * * @param {Request} request - запрос на обработку. * /

function initializeNextStageAndApprovers_(request) {
  var allStages = request.WorkflowStages;
  sortByOrderNo_(allStages);

  var updateApproverStatus = function(a) {
    a.Status = Status.Pending;
  };

  var currentLevel = -1;
  for (var i = 0; i < allStages.length; i++) {
    var stage = allStages[i];
    if (stage.Status === Status.Draft || stage.Status === Status.Pending) {
      if (currentLevel === -1) {
        currentLevel = stage.OrderNo;
      }

      if (currentLevel === stage.OrderNo && stage.Status === Status.Draft) {
        stage.Status = Status.Pending;
        stage.Approvers.forEach(updateApproverStatus);

        app.saveRecords([stage].concat(stage.Approvers));
      }
    }
  }
}
...