Публикация страницы из рабочего процесса

Всякий раз, когда страница создается или модифицируется, мы хотим, чтобы она была опубликована для объекта «Стадия». Для этого у нас есть ручная деятельность « Создать или изменить страницу », тогда у нас есть автоматическая активность « Опубликовать в 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
2
добавлено отредактировано
Просмотры: 1
Когда вы упоминаете, что страница не публикуется, когда она создана или изменена, действительно ли вы завершаете действие и отправляете его в автоматическую активность, которая будет следующей?
добавлено автор Alex Klock, источник
Это первый раз, когда я выполняю рабочий процесс, в нашем рабочем процессе первое действие - это ручная работа для создания или модификации страниц, после чего у нас есть автоматическая деятельность, в скрипте редактирования у нас есть вышеупомянутая часть кода. Благодарю.
добавлено автор user1453602, источник

3 ответы

Поскольку вы упомянули, что это ваша первая реализация рабочего процесса, вот некоторые другие основы для поиска/поиска. Поскольку это рабочий процесс страницы, я предполагаю, что структурная группа, которую вы создаете/редактируете на странице, уже была связана с определением процесса рабочего процесса на вкладке рабочего процесса SG.

  1. Create a new page (or edit a page) in the SG with the Workflow process definition set.
    • Verify that the Page is locked and in Workflow. From the Shortcuts section, goto "My Tasks". You should see your page there. If not, then the SG is probably missing the Process Definition.
  2. Right click the page from "My Tasks" and click "Finish Activity". This should finish your Manual Step and send it to your Automatic Activity. That Activity should then execute the script, which will publish the page and then finish the automatic activity, sending the workflow process to your next step.
    • Verify that the Page has been published (check publishing queue).
    • If the page has not been published, go to the page and check its status. If an error happens during an Automatic Activity, the workflow item will be "suspended" and stuck on that activity. If you see this, you can get details of the error from the Event Log under Source "Workflow Script".

Если вы следуете приведенному выше, и элемент рабочего процесса перемещается по процессу рабочего процесса правильно (прохождение вашей автоматической активности без ошибок и к вашему следующему действию), и вы все еще не видите его опубликованным, проверьте, что предложил 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
3
добавлено

Как вы можете видеть, это очень старый код, но он работает для публикации объектов через Workflow. «Этот код также публикует страницы /, на которые ссылаются эти элементы».

Помимо просмотра различных журналов, предложите установить 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

1
добавлено

Вот несколько вещей, которые вы можете проверить:

  1. Запустите издатель в режиме отладки (остановите службу, откройте командную строку, запустите c: \ Program Files (x86) \ Tridion \ bin \ TcmPublisher/debug ) и проверьте наличие ошибок
  2. Попробуйте опубликовать страницу в представлении «Мои задачи»
  3. Проверьте, является ли текущий статус одобрения вашей страницы более высоким или равным, чем «Минимальный статус утверждения» публикации «
0
добавлено