ODOO在10版本之后就删除了workflow。在11、12代码里,可以发现了其他实现工作流的方式。
拿PLM的工程变更单为例。
在每个阶段,我们都可以配置多个审批用户,而批准类型为三种:批准,但审批是可选的;必须批准;仅备注。
很好奇。看看代码。
阶段的对象为“mrp.eco.stage”:
class MrpEcoStage(models.Model): _name = 'mrp.eco.stage' _description = 'ECO Stage' _order = "sequence, id" _fold_name = 'folded' ... approval_template_ids = fields.One2many('mrp.eco.approval.template', 'stage_id', 'Approvals') ...
审核的对象“mrp.eco.approval.template”
class MrpEcoApprovalTemplate(models.Model): _name = "mrp.eco.approval.template" _order = "sequence" _description = 'ECO Approval Template' name = fields.Char('Role', required=True) ... # 三种审核类型: approval_type = fields.Selection([ ('optional', 'Approves, but the approval is optional'), ('mandatory', 'Is required to approve'), ('comment', 'Comments only')], 'Approval Type', default='mandatory', required=True) user_ids = fields.Many2many('res.users', string='Users', required=True) stage_id = fields.Many2one('mrp.eco.stage', 'Stage', required=True) ...
ECO里会有:
class MrpEco(models.Model): _name = 'mrp.eco' _description = 'Engineering Change Order (ECO)' _inherit = ['mail.thread', 'mail.activity.mixin'] ... stage_id = fields.Many2one( 'mrp.eco.stage', 'Stage', ondelete='restrict', copy=False, domain="[('type_id', '=', type_id)]