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

如何使用Java实现DocuSign延迟调度?配置后未生效求助

Java实现DocuSign延迟调度的正确方式

核心配置修正

你之前的问题出在信封状态设置错误,且缺少关键的调度时间配置。正确的参数组合如下:

  • 信封状态必须设为"sent",而非"created"。"created"仅会生成草稿信封,不会触发调度逻辑。
  • 工作流(Workflow)需明确指定调度时间:创建Workflow对象,设置workflowStatus为"scheduled",同时在scheduleDetails中配置sendDateTime(必须是UTC时区的未来时间)。
  • 调度发送状态(scheduledSending.setStatus())设为"started"是正确的,但必须配合上述两个条件。

完整代码示例

import com.docusign.esign.api.EnvelopesApi;
import com.docusign.esign.client.ApiClient;
import com.docusign.esign.client.ApiException;
import com.docusign.esign.model.*;

import java.time.OffsetDateTime;
import java.time.ZoneOffset;
import java.util.Arrays;

public class DelayedEnvelopeSender {
    public static void main(String[] args) throws ApiException {
        // 初始化API客户端(替换为你的集成密钥、基础路径、访问令牌)
        ApiClient apiClient = new ApiClient("https://demo.docusign.net/restapi");
        apiClient.addDefaultHeader("Authorization", "Bearer YOUR_ACCESS_TOKEN");

        EnvelopesApi envelopesApi = new EnvelopesApi(apiClient);
        String accountId = "YOUR_ACCOUNT_ID";

        // 创建收件人
        Signer signer = new Signer();
        signer.setEmail("recipient@example.com");
        signer.setName("Recipient Name");
        signer.setRecipientId("1");
        signer.setTabs(new Tabs().signHereTabs(Arrays.asList(new SignHere().setDocumentId("1").setPageNumber("1").setXPosition("100").setYPosition("100"))));

        // 创建文档(替换为你的文档路径)
        Document document = new Document();
        document.setDocumentBase64("BASE64_ENCODED_DOCUMENT");
        document.setName("Sample Document.pdf");
        document.setDocumentId("1");

        // 配置调度工作流
        ScheduleDetails scheduleDetails = new ScheduleDetails();
        // 设置UTC未来时间,比如1小时后
        OffsetDateTime sendTime = OffsetDateTime.now(ZoneOffset.UTC).plusHours(1);
        scheduleDetails.setSendDateTime(sendTime.toString());

        Workflow workflow = new Workflow();
        workflow.setWorkflowStatus("scheduled");
        workflow.setScheduleDetails(scheduleDetails);

        // 配置调度发送状态
        ScheduledSending scheduledSending = new ScheduledSending();
        scheduledSending.setStatus("started");

        // 创建信封定义
        EnvelopeDefinition envelopeDefinition = new EnvelopeDefinition();
        envelopeDefinition.setEmailSubject("请签署这份文档");
        envelopeDefinition.setDocuments(Arrays.asList(document));
        envelopeDefinition.setRecipients(new Recipients().signers(Arrays.asList(signer)));
        envelopeDefinition.setStatus("sent"); // 关键:必须设为sent
        envelopeDefinition.setWorkflow(workflow);
        envelopeDefinition.setScheduledSending(scheduledSending);

        // 发送信封
        EnvelopeSummary envelopeSummary = envelopesApi.createEnvelope(accountId, envelopeDefinition);
        System.out.println("信封已创建,ID:" + envelopeSummary.getEnvelopeId());
        System.out.println("调度状态:" + envelopeSummary.getWorkflowStatus());
    }
}

排查要点

  • 验证sendDateTime格式:必须是ISO 8601格式的UTC时间,且时间点在当前时间之后。DocuSign会忽略过去的调度时间。
  • 检查账号权限:确认你的DocuSign账号已启用延迟调度功能(部分免费或基础套餐可能不支持)。
  • 查看返回结果:调用createEnvelope后,返回的EnvelopeSummary中workflowStatus应为scheduled,同时sendDateTime需与你设置的一致。若返回created,说明参数仍有错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 07:27:41