Установка стандартных утверждающих и поддержание правильной работы маршрута в шаблоне утверждения документов.
Я использую код, разработанный Дарпаном в этом посте , но у меня возникают проблемы с маршрутами утверждения документов.
Теперь мне нужно решить ту же проблему, которую прокомментировал @ 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](https://i.stack.imgur.com/tDMt6.png)
Оба остаются текущими:
Когда мы добавляем 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));
}
}
}
}