Workflow 在Plone工作流程的不同阶段,从不同的组中指定审阅者

Workflow 在Plone工作流程的不同阶段,从不同的组中指定审阅者,workflow,plone,Workflow,Plone,我们正在医院实施Plone作为一个文档管理系统。 在此过程中,审查过程要求两个审查步骤: 护理人员审查文件的地方 医生检查文件的地方 当我们发现护士是根据他们操作的机器类型(特别是扫描仪、超声波等类型)进行分组时,问题就出现了。在这些机器上,他们对各种身体部位进行各种检查 另一方面,医生根据身体部位的专业知识进行分组 这意味着与骨盆超声相关的文件应由护理人员中的超声组和内科人员中的腹部组进行审查 大约有8个护理组和7个医生组,分别负责56种不同文件类型的56种不同工作流程。。。这看起来像一场维护

我们正在医院实施Plone作为一个文档管理系统。 在此过程中,审查过程要求两个审查步骤:

  • 护理人员审查文件的地方
  • 医生检查文件的地方
  • 当我们发现护士是根据他们操作的机器类型(特别是扫描仪、超声波等类型)进行分组时,问题就出现了。在这些机器上,他们对各种身体部位进行各种检查

    另一方面,医生根据身体部位的专业知识进行分组

    这意味着与骨盆超声相关的文件应由护理人员中的超声组和内科人员中的腹部组进行审查

    大约有8个护理组和7个医生组,分别负责56种不同文件类型的56种不同工作流程。。。这看起来像一场维护噩梦


    是否有一种不同的方式根据给定给文档的参数“动态”分配审阅者组?如果是这样,在文档类型级别定义的参数和在文档实例级别分配的参数在哪里?

    您必须编写pas插件。您可以从以下内容开始:(也适用于组)创建自己的角色/组。此插件非常简单,只需执行以下操作:

    security.declarePrivate('getRolesForPrincipal')
    def getRolesForPrincipal(self, principal, request=None):
        """ Assign roles based on 'request'. """
    

    在那里,您可以根据在文档类型级别定义并在文档实例级别分配的参数执行自己的逻辑并为用户分配一个组。

    如果您正确创建文件夹以反映您的组,则PlacefulWorkflow可能会有所帮助

    Plone工作流可以堆叠;e、 g.您可以为一个内容类型分配多个工作流

    这意味着您可以同时分配护士和医生工作流,每个工作流都会分配特定的权限。如果您在每个工作流中正确设置了角色,那么您的用例应该易于实现;把角色分成护士和医生

    因此,如果默认工作流使用审阅者、编辑器、参与者、成员等,请使用DoctorReviewer、nursereeviewer、DoctorEditor、nurseditor等。这样,两个工作流将处理两组并行权限、转换和状态


    如果这能解决您的问题,我对您的用例知之甚少,但我只是想确保您在探索复杂的自定义插件之前了解该选项。

    您还可以使用Archetypes.SchemaXtender创建两个自定义字段,而不是重载非常简单的内置“标记”字段(例如,设备、车身部件)您可以分配给每个内容项,然后使用这些字段将护士工作流程分配给正确的护士组,将医生工作流程分配给正确的医生组,如上所述。

    感谢Yuri的快速响应。不过,这看起来是一个在http标头中查找参数的项目。我正在定义参数s(标签,如果您愿意)在文档级别。知道这样做是否有效吗?只需更改getRolesForPrincipal中的代码以匹配您的用户案例。当然,这需要编程。编程没有问题,只是尝试找出我可以在文档上定义标记的位置。在我上面的示例中,文档类型始终是“页面”但是,如果是涉及骨盆的“页面”,则应决定角色。因此,骨盆应是该“页面”上的标记。本地角色应根据骨盆而不是“页面”分配。顺便问一下,这是否清楚,我感觉我没有很好地解释它。getKeywords应返回“标记”的lit在文档上。您还需要获取上下文以获取标记…或者您可以使用目录和当前路径(可在请求中使用),因此您不需要上下文,只需要目录查询。我认为borg.localrole存在(并且在默认情况下已安装并激活)因此,您不需要自己的PAS插件。特别是在这种情况下,特定用户的角色应该取决于上下文。Martijn,如果可以将其与Jon Stahl的以下建议结合使用,这看起来是一个可行的解决方案。Martijn,第一:重新考虑用例:实际上没有必要让审查过程并行sary,事实上,有时需要顺序。其次,你将如何实施8个护士组和7个医生组?当然不是作为个人角色?但如果不是,如何实施?使用a可以根据上下文为不同的用户提供不同的角色。这可以与Jon的建议一起使用(用设备和身体部位标记内容)。因此,您的不同组将在您的上下文中获得正确的角色,从而获得访问权限。对于顺序工作流,有时您仍然可以在一个工作流中设置额外的工作流变量,然后在这些变量上对另一个工作流进行控制。换句话说,多个工作流可以相互控制。我的下一个想法是创建一些脚本基于“您的”新创建的自定义字段中的值的状态转换将决定哪个用户组(粒度,以便代表所有护士和医生组)将接收审阅者角色。有关创建这些脚本的文档的任何说明?