为什么 DocumentHelper.CopyDocument 将新文档放在 "Published" 工作流程步骤中?

Why does DocumentHelper.CopyDocument place the new document in "Published" workflow step?

我正在尝试使用 Kentico 11 API 复制文档,当使用 Document.CopyDocument 时,生成的 TreeNode 会自动放入 "Published" 工作流程步骤而不是 "Edit" 正如人们所期望的那样。有什么办法可以防止这种情况发生吗?

我已经尝试了 DocumentHelper.CopyDocument 的两种方法,包括使用 CopyDocumentSettings 的方法,但都没有提供指定初始工作流程步骤的选项。

TreeNode newDoc = DocumentHelper.CopyDocument(document, parentDoc, true, _treeProvider);
// also tried this
TreeNode newDoc = DocumentHelper.CopyDocument(new CopyDocumentSettings(document, parentDoc, _treeProvider));

既没有给我指定工作流程步骤的选项,他们只是将其推送到 "published"。我可以创建文档的新版本,但这不会阻止最初发布副本。

这个问题我应该等得更久 post,原来你可以使用 API 中的 WorkflowManager 将文档推送到工作流程的第一步:

newDoc.WorkflowManager.MoveToFirstStep(newDoc);

将文档推送到 "Edit" 步骤而不影响工作流程历史记录,就好像文档从未发布过一样。

我相信它复制了当前页面的工作流状态,但我可能错了。我的建议如下。此代码检查页面是否正在使用检查 in/out,然后使用工作流将新创建的页面设置为工作流中的第一步(应该是 "edit")。

TreeProvider tree = new TreeProvider();
var treeNode = DocumentHelper.GetDocument(4, tree);
var targetNode = DocumentHelper.GetDocument(5, tree);
CMS.DocumentEngine.TreeNode newPage = DocumentHelper.CopyDocument(treeNode, targetNode, false);

WorkflowManager workflowManager = WorkflowManager.GetInstance(tree);
WorkflowInfo workflow = workflowManager.GetNodeWorkflow(page);

if (!newPage.IsCheckedOut)
{
    newPage.CheckOut();
}

if (workflow != null)
{
    if (!workflow.WorkflowAutoPublishChanges)
    {
        newPage.MoveToFirstStep("Copying the page from another page.");
    }
}

if (newPage.IsCheckedOut)
{
    newPage.CheckIn();
}