Функциональность утверждения/отклонения на пользовательских кнопках объекта

Я пытаюсь реализовать функциональность кнопок утверждения и отклонения на пользовательской кнопке в объекте.

у меня 2 вопроса

  1. Можем ли мы вызвать метод вершины из пользовательской кнопки?
  2. Как мы можем имитировать функциональность утверждения/отклонения в классе вершины?

Благодарность


person Prady    schedule 03.10.2011    source источник


Ответы (2)


1) Вам нужно создать страницу VF, которая выполняет необходимую вам работу и перенаправляет обратно туда, где вы хотите, чтобы ваш пользователь был. Описано здесь: http://sfdc.arrowpointe.com/2009/01/08/invoke-apex-from-a-custom-button-using-a-visualforce-page/

2) Взгляните на вторую половину (часть req2) этого примера: http://www.salesforce.com/us/developer/docs/apexcode/index_Left.htm#CSHID=apex_process_example.htm|StartTopic=Content%2Fapex_process_example.htm|SkinName=webhelp . Тогда вместо того, чтобы получать значение newWorkItemIds.get(0) из result, вы, вероятно, захотите запросить его из таблицы ProcessInstanceWorkitem.

Надеюсь, это поможет вам двигаться дальше

person sorenkrabbe    schedule 04.10.2011
comment
я не уверен, понял ли я, когда вы имели в виду запрос из ProcessInstanceWorkitem - person Prady; 06.10.2011
comment
В этом примере WorkitemId, который утверждается (с использованием переменной req2), берется из того момента, когда примеры запускают процесс утверждения. Вероятно, это не так в вашем коде. Я предполагаю, что процесс утверждения уже запущен, и вы просто хотите утвердить следующий шаг. Поэтому вы хотите найти WorkItemId на уровне данных. Вы делаете это, запрашивая from ProcessInstanceWorkitem. Что-то вроде этого должно дать вам идентификатор, который вам нужен: [Выбрать идентификатор из ProcessInstanceWorkitem, где ProcessInstance.TargetObjectId=:idOfObjectToApprove]; - person sorenkrabbe; 07.10.2011

Вариант 1: код Apex (http://blog.jeffdouglas.com/2010/01/04/automating-salesforce-approval-processes-with-apex-triggers/)

Приведенный ниже код вершины можно использовать для отправки записи на утверждение.

// create the new approval request to submit
Approval.ProcessSubmitRequest req = new Approval.ProcessSubmitRequest();
req.setComments('Submitted for approval. Please approve.');
req.setObjectId(Trigger.new[i].Id);
// submit the approval request for processing
Approval.ProcessResult result = Approval.process(req);
// display if the reqeust was successful
System.debug('Submitted for approval successfully: '+result.isSuccess());

Вариант 2. При нажатии JS (http://jamesrsullivan.com/salesforcecom-start-and-approval-process-from)

Перейдите к: «Настройка» > «Настроить» > «Возможности» > «Кнопки и ссылки». Нажмите кнопку «Создать» и используйте следующие данные: Метка: Утвердить Имя: Утвердить Тип отображения: Детальная страница Поведение кнопки: Выполнить JavaScript OnClick JavaScript:

if ((Modal.confirm && Modal.confirm('После того как вы отправите эту запись на утверждение, вы, возможно, не сможете отредактировать ее или отозвать из процесса утверждения в зависимости от ваших настроек. Продолжить?')) || (!Modal .confirm && window.confirm('После того как вы отправите эту запись на утверждение, вы, возможно, не сможете отредактировать ее или отозвать из процесса утверждения в зависимости от ваших настроек. Продолжить?'))) navigationToUrl('/p/process/ Submit?id={!Opportunity.Id}&retURL=%2F{!Opportunity.Id}');

Замените Opportunity на имя API вашего объекта.

person Chirag Mehta    schedule 04.10.2011
comment
Спасибо за информацию .. Я могу отправить на утверждение, единственное, что я хотел сделать, это позволить менеджерам одобрить представленную запись с помощью кнопок. у меня есть страница VF, которая отправляет запись на утверждение. Я хочу, чтобы менеджеры просмотрели запись, а затем одобрили или отклонили ее. - person Prady; 04.10.2011