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>