gpt4 book ai didi

workflow - Plone 4 - 第二个工作流程的历史不会显示在@@historyview 中

转载 作者:行者123 更新时间:2023-12-04 05:01:24 24 4
gpt4 key购买 nike

我在 Plone 4.2.4 中有一个灵巧的内容类型。版本控制适用于 default workflow对于这种内容类型,虽然它不是 plone 附带的工作流,但它是定制的。

但是,当我为相同类型启用第二个工作流程时,除了版本控制之外的所有内容都可以正常工作。

  • 由第二个工作流管理的其他权限正在工作
  • 状态变化正在起作用

  • 区别:
  • 我用了不同的 state_variable工作流的名称,这似乎是有道理的,为第二个工作流的状态有一个可编目的字段。

  • 我尝试使用相同的状态变量名称,但这没有帮助。我有工作流变量 review_history也在第二个工作流中设置,并在上下文中设置了足够的权限。
    我(主要)是 shure,我得到了权限的概念,但我不知道如何计算权限,当涉及多个工作流时。

    任何想法,为什么第二个工作流程不会在我的内容类型历史记录中留下痕迹?

    非常感谢。

    Udate

    我已经按照 Ida Ebkes 的建议对工作流程进行了重新排序并且确实看到,第二个工作流程的所有转换都得到了正确存储。所以这似乎是历史 View 的问题。

    由于这些工作流确实描述了一种内容类型的并发行为,我真的想坚持使用单独的工作流和理想情况下不同的工作流状态变量和目录索引。

    我现在认为需要做的是调整历史 View 。

    最佳答案

    这是我如何做到的。它至少适用于 plone 4.2.4。

    由于问题是显示问题,我只需要调整我的 historyviewlet。因此,我创建了一个名为 viewlets 的文件夹。在我的产品根目录中创建了一个 __init__.py和一个 configure.zcml文件。然后我复制了 content_history.pt , history_view.pt , review_history.ptcontent.py来自 plone/app/layout/viewlets/ (煎蛋)到新创建的文件夹。
    configure.zcml包含两个 View 注册:

    <browser:view
    for="*"
    name="my-contenthistory"
    class=".content.ContentHistoryView"
    permission="zope2.View"
    />

    <browser:page
    for="*"
    name="my-historyview"
    template="history_view.pt"
    permission="zope2.View"
    />

    此外,我复制了整个 WorkflowHistoryViewlet来自 content.py 的类(class)到不同的类名。 TransferHistory在这种情况下。然后我主要更改了与工作流状态变量对应的部分,而不是 review_state ,但是 transfer_state .我进一步发现第二个工作流的初始使用也创建了一个 created进入第二个工作流程的历史记录,我刚刚过滤了 .
    transfer_history = [x for x in transfer_history if x['action'] != None]

    我更正了 history_view.pt 中的 View 名称到我的新 View 名称。
    <div tal:replace="structure here/@@my-contenthistory">Content History</div>

    最后,我将我的类(class)作为父级添加到 ContentHistoryViewlet类(class) content.py
    class ContentHistoryViewlet(WorkflowHistoryViewlet, TransferHistoryViewlet):

    index = ViewPageTemplateFile("content_history.pt")

    @memoize
    def getUserInfo(self, userid):

    [...]

    def fullHistory(self):
    history = self.workflowHistory() + self.revisionHistory() + self.transferHistory()
    if len(history) == 0:
    return None
    history.sort(key=lambda x: x["time"], reverse=True)
    return history

    并在产品中注册.zcml configure.zcml
     <include package=".viewlets" />

    然后我修改了 content_history.pt并且还改变了 action_id 的定义在文件的上部。
    [...]
    action_id python:item['action'] or item.get('review_state', False) or item.get('transfer_state', False);
    [...]

    重新启动怪物并重新安装产品后,来自两个工作流程的所有状态更改都显示在 my-historyview 中。

    关于workflow - Plone 4 - 第二个工作流程的历史不会显示在@@historyview 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16115204/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com