Plone 有没有可能;凌驾;只是产品的工作流程?

Plone 有没有可能;凌驾;只是产品的工作流程?,plone,Plone,我有mynamespace.myproduct和mynamespace.myproduct2 mynamespace.myproduct2定义为mynamespace.myproduct的metadata.xml中的依赖项mynamespace.myproduct2有一些我想覆盖的工作流,而不必整体定制mynamespace.myproduct2 我知道我可以在ZMI使用portal\u工作流进行更改,但在mynamespace.myproduct和mynamespace.myproduct2重

我有
mynamespace.myproduct
mynamespace.myproduct2

mynamespace.myproduct2
定义为
mynamespace.myproduct
metadata.xml
中的依赖项
mynamespace.myproduct2
有一些我想覆盖的工作流,而不必整体定制
mynamespace.myproduct2

我知道我可以在ZMI使用
portal\u工作流
进行更改,但在
mynamespace.myproduct
mynamespace.myproduct2
重新安装在
portal\u quickinstaller
中时,我需要保留这些更改

工作流将具有相同的名称,但我的自定义工作流将具有不同的状态,我需要
mynamespace.myproduct
来覆盖
mynamespace.myproduct2
的工作流。总结:我只需要更改产品的工作流(保留内容类型等),但不想自定义整个包

我考虑过overrides.zcml(an),但这会完全覆盖配置文件,我只想覆盖工作流(甚至不知道这种方法是否有效。添加此文件将始终使用,而不是原始配置文件?如何正确测试它?)。根据:

注意ZCML和GenericSetup之间的差异ZCML更改会影响 在Zope中的所有站点中加载Python代码,而GenericSetupXML 文件只影响一个Plone站点及其数据库。通用设置XML 文件始终是数据库更改。ZCML与语言的关系 特定于站点的行为通常使用层来完成。ZCML指令, 与viewlets和views一样,在特定的应用程序上注册为活动 仅使用图层属性创建图层。导入GenericSetup XML时 通过portal_安装程序或产品附加组件安装程序运行一段时间 Plone站点,仅为特定站点激活该层, 启用为此图层注册的所有视图

我不想这影响所有的Plone网站,只有一个


那么,这是可能的/可行的,还是我必须执行fork并编辑原始工作流中的xml文件才能工作?

要覆盖
mynamespace.myproduct2
中定义的任何工作流,必须在
mynamespace.myproduct
中添加新的工作流定义,并将其绑定到所需的内容类型

因此,您必须添加此结构:

<myproduct>/
|-- ...
`-- profiles/
   `-- default/
      |-- ...
      |-- workflows.xml
      `-- workflows/
         `-- mycustom_workflow/
            `-- definition.xml
这将只影响安装产品的站点。
最后,请记住重新启动zope并重新安装产品以应用新的genericsetup配置。

但是如果我安装
mynamespace.myproduct2
(依赖项),它将“覆盖覆盖”。如何避免这种情况?您不能…简单地将覆盖作为最后一个覆盖重新安装您的产品
<?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>