You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DocuSign Apex Toolkit可选签署需求:单收件人签署即完成流程

问题解决方案

问题核心

你当前的实现中,虽然将收件人的签署标签设为可选(isRequired=false),且把他们放在同一路由顺序(routing order=2),但DocuSign默认同一路由组的所有收件人都需要完成操作(哪怕只是打开点击完成)才会结束流程。要实现「任一收件人完成签署即终止整个流程」,需要在信封层面配置完成策略为any,同时配合正确的收件人设置。

关键修改步骤

  1. 设置信封完成策略:创建信封时调用withCompletionStrategy('any'),告知DocuSign只要同一路由组内有一个收件人完成,就跳过该组剩余收件人并结束流程。
  2. 修正收件人配置:确保收件人的required属性与标签的required属性匹配,同时保持所有目标收件人处于同一路由顺序。

修改后的代码示例

1. 优化收件人创建方法

public static List<dfsle.Recipient> populateContactRecipient(List<Contact> contactList, String signingText){
    Boolean isRequired = signingText == 'Jointly - All Signatures required';
    System.debug('isRequired value: ' + isRequired);
    
    List<dfsle.Recipient> signerRecipientList = new List<dfsle.Recipient>();
    Integer i = 0;
    
    for(Contact con : contactList){
        i++;
        // 创建签署标签,按业务逻辑设置是否必填
        dfsle.Tab hereTab = new dfsle.SignHereTab()
            .withScale(0.8)
            .withRequired(isRequired)
            .withAnchor(new dfsle.Tab.Anchor(
                    'x?S' + i,
                    false,
                    true,
                    '',
                    true,
                    true,
                    'pixels',
                    5,
                    5
            ));
        
        // 创建收件人,修正required参数为业务逻辑的isRequired(之前写死false是错误的)
        dfsle.Recipient myRecipient = new dfsle.Recipient(
                null,
                'Signer',
                i + 1,
                2, // 保持所有联系人收件人在同一路由顺序
                new dfsle.Recipient.Role('Signer' + i, null),
                con.Name,
                con.Email,
                null,
                null,
                null,
                null,
                null,
                null,
                null,
                false,
                null,
                false,
                isRequired
        ).withTabs(new List<dfsle.Tab>{hereTab});
        
        signerRecipientList.add(myRecipient);
    }
    System.debug('signerRecipientList size: ' + signerRecipientList.size());
    return signerRecipientList;
}

2. 创建信封时添加完成策略

假设你创建信封的代码框架如下,核心是加入withCompletionStrategy('any')配置:

// 假设已获取模板ID、所有者收件人等必要信息
dfsle.Recipient ownerRecipient = // 你的所有者收件人创建逻辑
List<dfsle.Recipient> contactRecipients = populateContactRecipient(yourContactList, yourSigningText);

dfsle.Envelope envelope = new dfsle.Envelope()
    .withTemplateId('你的模板ID')
    .withRecipients(new List<dfsle.Recipient>{ownerRecipient}.addAll(contactRecipients))
    .withCompletionStrategy('any') // 核心配置:同一路由组任一收件人完成即结束流程
    .withStatus('sent');

// 发送信封
dfsle.EnvelopeService.sendEnvelope(envelope, null);

说明

  • withCompletionStrategy('any')仅对同一路由顺序的收件人生效,因此要确保所有可选签署的收件人处于同一个路由组(比如routing order=2)。
  • 收件人的required属性设为false时,收件人可选择拒绝或跳过,但配合完成策略,只要有一个人完成签署,其余收件人的任务会被自动取消。
  • 所有者收件人路由顺序为1,会先完成签署,之后进入路由顺序2的组,此时组内任一收件人完成操作,整个流程直接结束。

内容的提问来源于stack exchange,提问作者EhtU

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 04:32:53