用apex代码通过Trigger提交审批/在List View上批量提交与审批

本文介绍了一种基于注册类型的自动审批流程实现方法。通过代码自动将不同类型的供应商信息提交给相应的专员进行审核,提高了审批效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

场景:在做招投标站点时,供应商通过站点注册,录入公司相关信息,包括组织代码,公司资质,营业执照后,需要专员对其信用及真实性进行审核,由于某一注册类型的供应商的审核人是与注册类型相关的专员审核的,比如注册类型为品牌类,那可能需要品牌类专员审核,物料制作类需要物料制作类的专员审核。这时我们使用代码来实现就显得尤为关键了。

代码片段:

public class AccountTriggerFunction {
    
    /**
    功能名称:自动提交审批
    描述:自动根据注册类型将供应商信息提交给相应专员审核
    作者:Wilson
    日期:2017-07-17
    **/  
    public static void autoSubmitRecord(List<Account> accts){
        for(Account acc : accts){
            if(acc.Register_Type__c == '品牌类'){
                submitApproval(acc.Id, getApproverIdList('Brand_Specialist'));
            }else if(acc.Register_Type__c == '事件行销') {
                submitApproval(acc.Id, getApproverIdList('Activity_Specialist'));
            }else if(acc.Register_Type__c == '展览展示') {
                submitApproval(acc.Id, getApproverIdList('Show_Specialist'));
            }else if(acc.Register_Type__c == '物料制作') {
                submitApproval(acc.Id, getApproverIdList('Material_Specialist'));
            }else if(acc.Register_Type__c == '线上媒介') {
                submitApproval(acc.Id, getApproverIdList('Online_Specialist'));
            }else {
                submitApproval(acc.Id, getApproverIdList('Offline_Specialist'));
            }
        }
    }

    /**
    功能名称:提交审批
    描述:自定义审批
    参数:供应商记录id和审批人Id集合
    作者:Wilson
    日期:2017-07-17
    **/ 
    public static void submitApproval(Id accId, List<Id> approverIdList){
        Approval.ProcessSubmitRequest req1 = new Approval.ProcessSubmitRequest();
        req1.setComments('新供应商注册信息已提交,请审核!');
        req1.setObjectId(accId);// 供应商id
        req1.setSubmitterId(UserInfo.getUserId());// 初始提交人id
        req1.setProcessDefinitionNameOrId('AdsRigistrationInfoApproval');// 批准进程api Name
        req1.setNextApproverIds(approverIdList);// 下一步审批人,传入参数必须为List,注意是队列类型小组Id,而不是用户Id
        req1.setSkipEntryCriteria(true);// 是否跳过标准
        Approval.ProcessResult result = Approval.process(req1);
    }
    // 
    /**
    功能名称:获取审批人Id集合
    描述:根据队列名称获取审批人Id集合
    参数:队列名称
    返回值:队列Id
    作者:Wilson
    日期:2017-07-17
    **/ 
    public static List<Id> getApproverIdList(String queueName){
        List<Id> approverIdList = new List<Id>();
        List<Group> groups = [SELECT Id 
                              FROM Group 
                              WHERE Type = 'Queue' and DeveloperName = :queueName];// 查出来的Id只有一个
        for(Group g : groups) {
            approverIdList.add(g.Id);
        }
        return approverIdList;
    }


}
批准进程:

注意:假如将approvalIdList视作User Id,那么会出现如下异常:

System.DmlException: Process failed. First exception on row 0; first error: REQUIRED_FIELD_MISSING, missing required field:[]”

技巧:如果想了解一个对象包含哪些字段,在sfdc自带IDE中,使用ctr+shift+o后点开具体对象即可。

Bulk Approval Processing from List View in Salesforce
见链接:https://www.xgeek.net/salesforce/bulk-approval-processing-from-list-view-in-salesforce/

如何测试批量提交审批类:

见链接:https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_process_example.htm

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值