DocuSign Apex Toolkit可选签署需求:单收件人签署即完成流程
问题解决方案
问题核心
你当前的实现中,虽然将收件人的签署标签设为可选(isRequired=false),且把他们放在同一路由顺序(routing order=2),但DocuSign默认同一路由组的所有收件人都需要完成操作(哪怕只是打开点击完成)才会结束流程。要实现「任一收件人完成签署即终止整个流程」,需要在信封层面配置完成策略为any,同时配合正确的收件人设置。
关键修改步骤
- 设置信封完成策略:创建信封时调用
withCompletionStrategy('any'),告知DocuSign只要同一路由组内有一个收件人完成,就跳过该组剩余收件人并结束流程。 - 修正收件人配置:确保收件人的
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
相关产品推荐
相关产品推荐

