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
4

3 に答える 3

3

これが最初のワークフローの実装であるとおっしゃっていたので、試したり探したりするその他の基本事項を次に示します。これはページ ワークフローであるため、ページを作成/編集している構造グループは、その SG のワークフロー タブで既にワークフロー プロセス定義に関連付けられていると想定しています。

  1. ワークフロー プロセス定義セットを使用して、SG で新しいページを作成 (またはページを編集) します。
    • ページがロックされ、ワー​​クフローにあることを確認します。ショートカット セクションから、[マイ タスク] に移動します。そこに自分のページが表示されるはずです。そうでない場合は、SG にプロセス定義がない可能性があります。
  2. 「My Tasks」からページを右クリックし、「Finish Activity」をクリック。これで手動ステップが終了し、自動アクティビティに送信されます。次に、そのアクティビティはスクリプトを実行する必要があります。これにより、ページが公開され、自動アクティビティが終了し、ワークフロー プロセスが次のステップに送られます。
    • ページが公開されていることを確認します (公開キューを確認します)。
    • ページが公開されていない場合は、ページに移動してステータスを確認します。自動アクティビティ中にエラーが発生した場合、ワークフロー アイテムは「中断」され、そのアクティビティで停止します。これが表示された場合は、イベント ログのソース "ワークフロー スクリプト" からエラーの詳細を取得できます。

上記に従って、ワークフロー アイテムがワークフロー プロセスに沿って正しく移動している (エラーなしで自動アクティビティを通過し、次のアクティビティに移動している) にもかかわらず、まだ公開されていない場合は、Nuno の提案を確認してください。

また、CurrentWorkItem.GetItem() メソッドを使用してページを既に開いているため、TDSE オブジェクトを使用してページを開く必要がないことにも注意してください。スクリプトは次のように短縮できます。

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
于 2012-12-28T18:29:39.787 に答える
1

ご覧のとおり、これは非常に古いコードですが、ワークフローを介してオブジェクトを公開するために機能します。「このコードは、このアイテムが参照されているページ/場所も公開します。」

さまざまなログを確認する以外に、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

ありがとうヴィン

于 2013-01-03T10:07:27.900 に答える
0

テストできる項目は次のとおりです。

  1. パブリッシャーをデバッグ モードで実行し (サービスを停止し、コマンド プロンプトを開き、 を実行c:\Program Files (x86)\Tridion\bin\TcmPublisher /debug)、エラーをチェックします。
  2. [マイ タスク] ビューからページを公開してみてください
  3. ページの現在の承認ステータスが公開ターゲットの「最小承認ステータス」以上かどうかを確認します
于 2012-12-28T13:20:16.097 に答える