Можно ли "переопределить" только рабочий процесс из продукта? - PullRequest
3 голосов
/ 23 сентября 2011

у меня mynamespace.myproduct и mynamespace.myproduct2.

mynamespace.myproduct2 определяется как зависимость в mynamespace.myproduct s metadata.xml. mynamespace.myproduct2 имеет несколько рабочих процессов, которые я бы хотел переопределить, не настраивая mynamespace.myproduct2 в целом.

Я знаю, что могу изменить его, используя portal_workflow в ZMI, но мне нужно сохранить эти изменения в обеих ситуациях, когда mynamespace.myproduct и mynamespace.myproduct2 переустанавливается в portal_quickinstaller.

Рабочие процессы будут иметь одно и то же имя, но мой настроенный будет иметь другие состояния, и мне нужно mynamespace.myproduct для переопределения рабочих процессов mynamespace.myproduct2. Подводя итог: мне нужно просто изменить рабочий процесс из продукта (с сохранением типов контента и т. Д.), Но я не хочу настраивать весь пакет.

Я думал о overrides.zcml ( пример ), но это полностью переопределяет профиль, и я просто хочу переопределить рабочий процесс (и даже не знаю, работает ли этот подход. Добавление этого файла происходит всегда использоваться вместо исходного профиля? Как правильно его проверить?). И согласно руководству сообщества plone :

Примечание. Разница между изменениями ZCML и GenericSetup ZCML влияет загружен код Python во все сайты внутри Zope, тогда как GenericSetup XML файлы влияют только на один сайт Plone и его базу данных. GenericSetup XML файлы всегда изменения базы данных. Отношения между ZCML и специфичное для сайта поведение обычно выполняется с использованием слоев. Директивы ZCML, как viewlets и views, зарегистрированы, чтобы быть активными на определенном слой только с использованием атрибута слоя. Когда GenericSetup XML импортируется через portal_setup или установщик надстройки продукта запускается для Plone site, слой активирован только для конкретного сайта, включение всех представлений, зарегистрированных для этого слоя.

Я не хочу, чтобы это затрагивало все сайты Plone, только один.

Итак, возможно ли это / выполнимо, или мне придется сделать разветвление и отредактировать xml-файлы из исходного рабочего процесса для работы?

1 Ответ

4 голосов
/ 23 сентября 2011

для переопределения любого рабочего процесса, определенного в 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.

...