在Dynamics 365 F&O工作流开发过程中,配置采购订单工作流时,有两个审批元素可供使用,一个是“审批采购订单”,另一个是“可编辑的审批采购订单”(下文也将对其进行突出显示)。我的问题是关于第二个元素的开发,即“可编辑的审批采购订单”。根据我的测试,如果在配置过程中将此元素关联起来,系统将允许审批人编辑采购订单,然后在之后进行审批操作。
可编辑的审批仅允许审批人编辑所选记录(他们正在审批的)。您可以按照以下步骤实现相同的功能:
- 复制工作流审批工件并相应地更改其名称(例如,在我的情况下为“CaseDetailBaseApprovalEdit”),并将其与简单审批一起添加到支持的元素中。
- 在表中创建一个方法(例如,我的情况下的“editAllowed()”)。
public boolean editAllowed() { WorkflowElementTable workflowElementTable; WorkflowWorkItemTable workflowWorkItemTable; select * from workflowWorkItemTable where workflowWorkItemTable.RefRecId == this.RecId && workflowWorkItemTable.Status == WorkflowWorkItemStatus::Pending && workflowWorkItemTable.UserId == curUserId() && workflowWorkItemTable.CompanyId == this.DataAreaId; select * from workflowElementTable where workflowElementTable.ElementId == workflowWorkItemTable.ElementId; return workflowElementTable.ElementName == workflowApprovalStr(CaseDetailBaseApprovalEdit) || this.CaseWFStatus == CaseWFStatus::Draft; }
- 覆盖表单数据源的 active() 方法(在我的情况下,我创建了 OOTB 表单数据源的 CoC)。
public int active() { FormRun formRun = this.formRun() as FormRun; FormDataSource ds = formRun.dataSource(); CaseDetailBase table = ds.cursor(); boolean allowEdit = table.editAllowed(); ds.allowEdit(allowEdit); if(allowEdit) { formRun.design().viewEditMode(ViewEditMode::Edit); } else { formRun.design().viewEditMode(ViewEditMode::View); } return next active(); }