Tridion 从工作流发布页面
无论何时创建或修改页面,我们都希望将其发布到临时目标。 为此,我们有手动活动“Tridion 从工作流发布页面,tridion,tridion-2011,Tridion,Tridion 2011,无论何时创建或修改页面,我们都希望将其发布到临时目标。 为此,我们有手动活动“创建或编辑页面””,然后我们有自动活动“发布到登台””,在此我们编写了以下代码,但页面在创建或修改时不会被发布。此外,没有错误显示如何调试哪里出了问题 自动活动内容管理器工作流的脚本 设置oTDSE=CreateObject(“TDS.TDSE”) 调用oTDSE.Initialize 设置ObjCurrentItem=CurrentWorkItem.GetItem(3) sDestinationServer=“tcm
创建或编辑页面”
”,然后我们有自动活动“发布到登台”
”,在此我们编写了以下代码,但页面在创建或修改时不会被发布。此外,没有错误显示如何调试哪里出了问题
自动活动内容管理器工作流的脚本
设置oTDSE=CreateObject(“TDS.TDSE”)
调用oTDSE.Initialize
设置ObjCurrentItem=CurrentWorkItem.GetItem(3)
sDestinationServer=“tcm:0-2-65538”
Set oPage=oTDSE.GetObject(ObjCurrentItem.ID,3)
调用oPage.Publish(sDestinationServer,True,True,True)
FinishActivity“发布到暂存以供审查”
设置oPage=Nothing
set ObjCurrentItem=Nothing
设置oTDSE=无
以下是一些您可以测试的东西:
c:\ProgramFiles(x86)\Tridion\bin\TcmPublisher/debug
)并检查错误以下是一些您可以测试的内容:
c:\ProgramFiles(x86)\Tridion\bin\TcmPublisher/debug
)并检查错误因为您提到这是您的第一个工作流实现,所以这里有一些其他的基础知识可以尝试/寻找。由于这是一个页面工作流,我假设您在其中创建/编辑页面的结构组已与该SG的“工作流”选项卡中的工作流流程定义关联
- 验证页面是否已锁定并处于工作流中。在快捷方式部分,转到“我的任务”。你应该在那里看到你的页面。如果没有,则SG可能缺少流程定义
- 验证页面是否已发布(检查发布队列)
- 如果该页面尚未发布,请转到该页面并检查其状态。如果在自动活动期间发生错误,工作流项将被“挂起”并卡在该活动上。如果您看到这一点,您可以从源“工作流脚本”下的事件日志中获取错误的详细信息
Dim ObjCurrentItem
Set ObjCurrentItem = CurrentWorkItem.GetItem()
Call ObjCurrentItem.Publish("tcm:0-2-65538", True, True, True)
FinishActivity "Publish to Staging for Review"
Set ObjCurrentItem = Nothing
因为您提到这是您的第一个工作流实现,所以这里有一些其他的基础知识可以尝试/寻找。由于这是一个页面工作流,我假设您在其中创建/编辑页面的结构组已与该SG的“工作流”选项卡中的工作流流程定义关联
- 验证页面是否已锁定并处于工作流中。在快捷方式部分,转到“我的任务”。你应该在那里看到你的页面。如果没有,则SG可能缺少流程定义
- 验证页面是否已发布(检查发布队列)
- 如果该页面尚未发布,请转到该页面并检查其状态。如果在自动活动期间发生错误,工作流项将被“挂起”并卡在该活动上。如果您看到这一点,您可以从源“工作流脚本”下的事件日志中获取错误的详细信息
Dim ObjCurrentItem
Set ObjCurrentItem = CurrentWorkItem.GetItem()
Call ObjCurrentItem.Publish("tcm:0-2-65538", True, True, True)
FinishActivity "Publish to Staging for Review"
Set ObjCurrentItem = Nothing
如您所见,这是一个非常古老的代码,但可以通过工作流发布对象。“此代码还发布引用此项目的页面/位置。” 除了查看各种日志之外,我们还建议将clean=false设置为,并检查直到创建包的时间点。这会让你知道它已经达到了什么程度。当然,我们会放一些调试消息,看看是否所有的都执行得很好
Sub WFPublishPages( ByRef oComponent, ByRef targets, ByRef activateBlueprinting, ByRef activateWorkflow, ByRef rollbackOnFailure, ByRef publishTime, ByRef unpublishTime, ByRef deployTime, ByRef resolveComponentLinks, ByRef priority, ByRef ignoreRenderFailures, ByRef maximumRenderFailures )
' If IsNull(publishTime) Then
' publishTime = 0
' End If
' If IsNull(unpublishTime) Then
' unpublishTime = 0
' End If
' If IsNull(deployTime) Then
' deployTime = 0
' End If
' If IsNull(resolveComponentLinks) Then
' resolveComponentLinks = True
' End If
' If IsNull(priority) Then
' priority = PublishPriorityNormal
' End If
' If IsNull(ignoreRenderFailures) Then
' ignoreRenderFailures = false
' End If
' Is IsNull(maximumRenderFailures) Then
' maximumRenderFailures = 0
' End If
Dim Debugstring
Debugstring = ""
Dim oLRF
Set oLRF = TDSE.CreateListRowFilter()
Call oLRF.SetCondition("ItemType", ItemTypePage)
Call oLRF.SetCondition("OnlyLatestItems", True)
Dim oXML
Set oXML = CreateObject("MSXML2.DOMDocument.6.0")
Call oXML.setProperty("SelectionNamespaces", "xmlns:tcm=""http://www.tridion.com/ContentManager/5.0"" xmlns:xlink=""http://www.w3.org/1999/xlink""")
Call oXML.loadXML(oComponent.Info.GetListUsingItems(XMLListID, oLRF))
Dim oNode
Dim oPage
Dim strPageID
Debugstring = Debugstring & " DUBUG: ComponentID " & oComponent.ID & vbCrLf
For Each oNode In oXML.selectNodes("/tcm:ListUsingItems/tcm:Item")
strPageID = oNode.selectSingleNode("@ID").text
Debugstring = Debugstring & " DUBUG: PageID " & strPageID & vbCrLf
Set oPage = TDSE.GetObject(strPageID, OpenModeView )
Debugstring = Debugstring & " DUBUG: oPage.Title "
Debugstring = Debugstring & oPage.Title
Debugstring = Debugstring & vbCrLf
Call oPage.Publish(targets , activateBlueprinting, activateWorkflow, rollbackOnFailure, publishTime, unpublishTime, deployTime, resolveComponentLinks, priority,ignoreRenderFailures,maximumRenderFailures )
Call WriteLog("Publish Page: " & oPage.Title & " for component " & oComponent.Title & " - renderTime is " & publishTime & " - deployTime is " & deployTime)
Set oPage = Nothing
Set oNode = Nothing
Next
Set oXML = Nothing
Set oLRF = Nothing
谢谢
Vin正如您所看到的,这是一个非常古老的代码,但可以通过工作流发布对象。“此代码还发布引用此项目的页面/位置。” 除了查看各种日志之外,我们还建议将clean=false设置为,并检查直到创建包的时间点。这会让你知道它已经达到了什么程度。当然,我们会放一些调试消息,看看