发布通过API编辑的文档时,如何让Kentico 8.0正确更新文档附件



场景:

我们在Kentico8.0实例的顶部安装了一个Angular前端。用户可以通过这个前端查看、添加和编辑文档。当用户添加/编辑文档时,相关详细信息将发布到自定义处理程序,该处理程序随后通过Kentico API(C#)更新文档,并在工作流中酌情移动它们。目前,它将添加/编辑的文档放入"批准"步骤,然后管理员可以通过后端发布。允许用户通过API将图像列表附加到文档。

我们使用的是一个简单的工作流,即编辑->批准->发布。添加和编辑都将文档移动到"编辑",进行更改,将其移动到"批准",然后保存更改(node.Update())。发布从Kentico管理员端进行。

问题:

常规文档编辑似乎工作正常。。。但我的附件有问题。用户可以毫无问题地创建新文档和附加图像。提交时(将文档置于"批准"步骤),附件会被推送到CMS_AttachmentHistory表中,但不会出现在CMS_Attach表中。看起来很合理。管理员发布文档后,附件也会被推送到CMS_Attachment表中。还是合理的。如果我现在编辑(将文档移动到编辑步骤,更新数据,然后将其移动到批准步骤,然后保存)并更改附件。。。正如我所期望的,这些附件更改将显示在CMS_AttachmentHistory表中。。。但是当我以Admin的身份发布文档时,CMS_Attachment表保持不变。

我不明白为什么在添加->发布时附件会被正确地推送到CMS_Attachment表,而在编辑->发布时却不是。显然有些不同。。。但是更新的代码是相同的。。。唯一的例外是新文档的node.insert()。两者都从编辑阶段开始,进行更改,移动到批准,然后保存。据推测,在这两种情况下,文档发布是相同的。

我在文档中找不到任何关于在工作流中手动移动附件的方法。。。我不确定这是否是我需要做的事情,但这似乎很奇怪,它适用于添加,而不是编辑。

如果需要,我可以提供代码,但在这种情况下似乎没有那么大帮助。

编辑:添加了有关工作流程设置的更多详细信息

您还没有发布用于"发布"的代码,所以让我尝试建议我过去使用过的以下方法。它实际上与Kentico在管理区域内发布时使用的代码相同,所以我认为它也应该处理附件。您可能需要对其进行一些更改,但发布API过程可能会有所帮助。

TreeProvider tree = new TreeProvider(UserInfoProvider.GetUserInfo("SomeoneWithPermissionsToPublish"));
        int documentID = 1;
        //get document
        var doc = DocumentHelper.GetDocument(documentID, tree); // change DocumentID
        if (doc != null)
        {
            // Create a new Version manager instance
            VersionManager manager = VersionManager.GetInstance(tree);
            // Check out the document
            manager.CheckOut(doc);
            // do changes here
            // Save the changes
            DocumentHelper.UpdateDocument(doc, tree);
            // Check in the document
            manager.CheckIn(doc, null, null);
            WorkflowManager workflowManager = WorkflowManager.GetInstance(tree);
            WorkflowInfo workflow = workflowManager.GetNodeWorkflow(doc);
            // apply latest version
            manager.ApplyLatestVersion(doc);
            // Check if the document uses workflow
            if (workflow != null)
            {
                // Publish the document
                workflowManager.PublishDocument(doc, null);
            }
        }

这些步骤之间只有一个区别。附件已存在于编辑->发布步骤的CMS_Attachment表中。您可以尝试在此步骤中删除它们。

相关内容

  • 没有找到相关文章

最新更新