Permissions Plone:自定义工作流和动态本地角色

Permissions Plone:自定义工作流和动态本地角色,permissions,workflow,plone,Permissions,Workflow,Plone,我有一个自定义的灵活性类型,允许用户指定访问限制,这些限制存储为类型上的字段。我已经创建了一个自定义的borg.localroleILocalRoleProvider,它适应自定义类型并基于这些字段返回一组角色。我用绑定到simple\u publication\u workflow的自定义类型测试了这一点,适配器按预期工作 但是,我需要大量定制工作流程。创建新工作流并将其分配给自定义类型后,适配器停止工作。在适配器的初始化器中放置一个pdb断点表明它根本没有被调用。如果我将工作流更改回simp

我有一个自定义的灵活性类型,允许用户指定访问限制,这些限制存储为类型上的字段。我已经创建了一个自定义的
borg.localrole
ILocalRoleProvider
,它适应自定义类型并基于这些字段返回一组角色。我用绑定到
simple\u publication\u workflow
的自定义类型测试了这一点,适配器按预期工作

但是,我需要大量定制工作流程。创建新工作流并将其分配给自定义类型后,适配器停止工作。在适配器的初始化器中放置一个
pdb
断点表明它根本没有被调用。如果我将工作流更改回
simple\u publication\u workflow
,它将按预期再次工作,但如果设置为其他标准工作流,例如
one\u state\u workflow
plone\u workflow
,则不会再次调用适配器


我错过了什么?我怎么能有一个与<代码> ILocalRoleProvider < /代码>交互的工作流?如预期的那样?

还没有回答这个问题,因为它涉及到一些猜想,但是BoG.LoalLoLe.WorkGooy中的本地角色管理器插件——在更改工作流定义之后,可能需要考虑重新启动Zope实例。(以清除缓存的值),然后重试。您不能,也不应该期望适配器每次都由本地角色管理器插件实例化(CheckLocalRoleAllowed方法是使用对象、用户和一组角色调用的,与其他一些方法不同,它是记忆的)。我尝试在更改分配的工作流后重新启动该实例,但没有成功。在缓存任何内容之前,我在干净的网站构建上也遇到了同样的问题。感谢大家对
CheckLocalRoles Allowed
的提醒,这可能会给我带来一些希望在这里实现的问题。