2012-12-28 89 views
2

無論何時創建或修改頁面,我們都希望將其發佈到暫存目標。 對此,我們手動活動「Create or Edit Page」,然後我們有自動活動「Publish to Staging」在這裏我們已經寫了下面的代碼,但是頁面在創建或修改時不會發布。也沒有錯誤顯示如何調試出錯的地方。工作流發佈頁面

' Script for Automatic Activity Content Manager Workflow 

Set oTDSE = CreateObject("TDS.TDSE") 
Call oTDSE.Initialize 
Set ObjCurrentItem = CurrentWorkItem.GetItem(3) 
sDestinationServer = "tcm:0-2-65538" 
Set oPage = oTDSE.GetObject(ObjCurrentItem.ID, 3) 

Call oPage.Publish(sDestinationServer, True, True, True) 

FinishActivity "Publish to Staging for Review" 

set oPage = Nothing 
set ObjCurrentItem = Nothing 
set oTDSE = Nothing 
+0

當你提到創建或修改時的頁面是沒有得到發表,你居然整理活動,並把它發送到下一個自帶的自動活動? –

+0

這是我第一次實現工作流程,在我們的工作流程中,第一個活動是手動活動,用於創建或修改頁面,之後我們有自動活動,在編輯腳本下我們有上面提到的代碼部分。謝謝。 – user1453602

回答

0

您可以通過以下測試的幾件事情:

  1. 運行在調試模式下發布者(停止該服務,打開命令提示符,運行c:\Program Files (x86)\Tridion\bin\TcmPublisher /debug),並檢查錯誤
  2. 嘗試發佈頁面從「我的任務」視圖
  3. 檢查您的頁面當前的審批狀態是否高於或等於發佈目標的「最低審批狀態」
3

既然你提到過這是你的第一個工作流實現,這裏有一些其他的基礎知識來嘗試/尋找。由於這是一個頁面工作流程,我假設您正在創建/編輯該頁面的結構組已經與該工作流程選項卡中的工作流程過程定義相關聯。

  1. 創建一個新的頁面(或編輯頁)與工作流過程定義設置的SG。
    • 確認頁面已鎖定並處於工作流程中。從快捷鍵部分轉到「我的任務」。你應該在那裏看到你的頁面。如果沒有,那麼SG可能會錯過流程定義。
  2. 右鍵單擊「我的任務」頁面,然後單擊「完成活動」。這應該完成您的手動步驟並將其發送到您的自動活動。然後該活動應該執行腳本,該腳本將發佈頁面,然後完成自動活動,並將工作流程過程發送到下一步。
    • 確認頁面已發佈(檢查發佈隊列)。
    • 如果頁面尚未發佈,請轉到頁面並檢查其狀態。如果在自動活動期間發生錯誤,工作流程項目將被「暫停」並且停留在該活動上。如果您看到這一點,可以從源「工作流程腳本」下的事件日誌中獲取錯誤的詳細信息。

如果按照以上,並且工作流項目沿工作流程正確地移動(讓你過去的自動活動,沒有錯誤和你的下一個活動),你仍然沒有看到它的問世,則覈實Nuno的建議。

另外請注意,您不必使用TDSE對象以打開網頁,你已經擁有它通過CurrentWorkItem.GetItem()方法......你的腳本可以縮短打開:

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 
1

正如你所看到的,這是一個非常古老的代碼,但是可以通過Workflow發佈對象。 「這段代碼還會發布頁面/這些項目被引用的地方。」

除了查看各種日誌,還會建議設置clean = false並檢查包是否創建到什麼點。這會讓你知道它到底有多遠。 Ofcourse放了一些調試信息,看看是否所有執行良好。

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的