2011-09-22 83 views
3

我有mynamespace.myproductmynamespace.myproduct2是否可以「覆蓋」產品的工作流程?

mynamespace.myproduct2被定義爲mynamespace.myproductmetadata.xml的依賴關係。 mynamespace.myproduct2有一些我想重寫的工作流程,而不必自定義mynamespace.myproduct2作爲一個整體。

我知道我可以使用portal_workflow在ZMI改變它,但我需要保持這些變化,在這兩種情況下,當mynamespace.myproductmynamespace.myproduct2portal_quickinstaller重新安裝。

工作流將具有相同的名稱,但我自定義的工作流將具有不同的狀態,並且我需要mynamespace.myproduct來覆蓋mynamespace.myproduct2的工作流程。總結:我需要從產品中更改工作流程(保留內容類型等),但不想自定義整個軟件包。

我想了解overrides.zcml(example),但是這完全覆蓋了配置文件,我只是想重寫工作流程(甚至不知道這種方法是否工作,添加此文件將始終使用原始配置文件?我如何正確測試它?)。而根據plone community guide:ZCML和GenericSetup ZCML變化之間

注意差異影響在裏面Zope的所有站點,而GenericSetup XML文件 隻影響一個Plone站點及其數據庫 加載Python代碼。 GenericSetup XML 文件始終是數據庫更改。 ZCML和 網站特定行爲之間的關係通常使用圖層來完成。 ZCML指令 (如視圖和視圖)僅在使用圖層屬性時才被註冊爲在某個 圖層上處於活動狀態。當GenericSetup XML通過portal_setup導入 ,或者產品附加安裝程序爲 Plone站點運行時,該層僅針對特定站點激活, 激活爲該層註冊的所有視圖。

我不希望這會影響所有Plone網站,只有一個。

所以,這是可能的/可行的,還是我將不得不做一個叉和編輯從原始工作流的xml文件工作?

回答

4

要覆蓋mynamespace.myproduct2中定義的任何工作流程,您必須在mynamespace.myproduct中添加新的工作流程定義並將其綁定到您所需的內容類型。

所以,你必須添加這種結構:

<myproduct>/ 
|-- ... 
`-- profiles/ 
    `-- default/ 
     |-- ... 
     |-- workflows.xml 
     `-- workflows/ 
     `-- mycustom_workflow/ 
      `-- definition.xml 

workflows.xml你將有:

<?xml version="1.0"?> 
<object name="portal_workflow" meta_type="Plone Workflow Tool"> 

<!-- This registers the new workflow --> 
<object name="mycustom_workflow" meta_type="Workflow"/> 

<!-- This binds the new wf with MyContent content type -->  
<bindings> 
    <type type_id="MyContent"> 
    <bound-workflow workflow_id="mycustom_workflow"/> 
    </type> 
</bindings> 

</object> 

這隻會影響在安裝了你的產品的網站。 最後,請記住重新啓動zope並重新安裝產品以應用新的genericsetup配置。

+1

但是,如果我安裝'mynamespace.myproduct2'(依賴),它將「覆蓋覆蓋」。我如何避免這種情況? –

+1

您不能......只需重新安裝您的產品,並將覆蓋作爲最後一個 –