首页 > 其他分享 >D365: Workflow避免同一审核人多次审批(问题处理)

D365: Workflow避免同一审核人多次审批(问题处理)

时间:2022-09-19 11:34:36浏览次数:52  
标签:Comment Workflow workItemActivityContext D365 字段 审批 审核 strQuery

之前提到的D365中,Workflow避免同一审核人多次审批,有一种场景没有考虑到,当在一个审批节点中,设置了多个审批人,但是审批的策略为单个人审批通过,这样就会出现一个问题,假如,节点中设置了A和B两个人,A审批了此节点,因为策略是单个人审批通过,节点就完成,这样B就会被系统自动更新为完成,导致下一个节点中如果再次出现B审批人,之前的逻辑,会跳过B,导致B没法审批,为了修复这个问题,想到两种方案来处理。

一,在WorkflowWorkItemTable增加标识字段来,区分是否是由系统自动完成的,来判断是否要跳过工作项的创建。

二,通过WorkflowTrackingCommentTable的Comment字段做处理,如果是系统自动完成的工作项,Comment字段一定是空的。手工完成的工作项,如果为空,通过后台强制赋予固定的字符串,这样就可以通过,Comment是否为空来区分工作项是系统自动完成,还是手工完成。

通过第二种方式,在测试中发现,Comment是memo字段,在D365中无法通过非空来过滤,这个问题在2012也存在,所以这里无法直接进行筛选来判断,我们可以通过直接写SQL语句来查找,当然也可以增加一个非memo类型的string字段,当WorkflowTrackingCommentTable插入时,将Comment字段自动赋给我们增加的字段,然后通过新加的字段来判断。

SQL查下语句

Connection  connection = new Connection();
        str         strQuery;
        Statement   statement = connection.createStatement();
        SqlStatementExecutePermission permission;
        strQuery    = strFmt("select * from WORKFLOWTRACKINGCOMMENTTABLE c " +
                             "inner join WORKFLOWTRACKINGWORKITEM  i on i.TRACKINGID = c.TRACKINGID " +
                             "inner join WORKFLOWWORKITEMTABLE t on t.RECID = i.WorkflowWorkItemTable " +
                             "where t.CORRELATIONID = '%1' " +
                             "and t.ROOTCORRELATIONID = '%2' " +
                             "and t.ConfigurationId = '%3' " +
                             "and t.UserId = '%4' " +
                             "and t.STATUS = %5 " +
                             "and c.COMMENT_ <> '' ",
                             _workItemActivityContext.WorkflowContext.WorkflowCorrelationId,
                             _workItemActivityContext.WorkflowContext.RootCorrelationId,
                             _workItemActivityContext.ConfigurationId,
                             _workItemActivityContext.User.UserId,
                             enum2int(WorkflowWorkItemStatus::Completed));
        permission = new SqlStatementExecutePermission(strQuery);
        permission.assert();

        ResultSet resultSet = statement.executeQuery(strQuery);

        while(resultSet.next())
        {
            skip = true;
            break;
        }

  

 

标签:Comment,Workflow,workItemActivityContext,D365,字段,审批,审核,strQuery
From: https://www.cnblogs.com/dingkui/p/16707152.html

相关文章

  • D365: Business event(二)自定义功能事件
    D365F&O中自定义功能事件Demo(销售订单行更新剩余交货量)1,创建Contract类,继承BusinessEventsContract 2,创建Event类,继承BusinessEventsBase 3,在触发点注册事件......
  • D365: Business event如何应用于Power automate
    业务事件在D365FO中有两种业务事件的处理方式:1.工作流事件在D365F&O中,如果单据存在工作流,在业务事件清单中,我们可以直接看到,Powerautomate可以直接拿来使用,不需要额......
  • D365: Workflow避免同一审核人多次审批
    D365中当一个员工身居多职或者承担多个角色时,针对这样的场景,我们在配置审批流过程当中,难免会遇到,在配置的审批节点时,同一个人会出现在多个审批节点中,用户就会出现,同一张单......
  • workflow创建分支工作流
    1.创建工作流namespace工作流.Models{publicclassOutcomeWorkflow:IWorkflow<MyData>{publicstringId=>"参数";publicintVer......
  • 小程序提交审核提示接口未配置在app.json文件中
    以下接口未正确配置在app.json文件中,勾选协议可继续提交,该版本发布后,用户将无法使用相关接口能力。 接口未正确配置:wx.chooseLocation、wx.getLocation    ......
  • D365: 添加客制化表作为财务维度
    1,创建表VyaFDCAPEX  注意事项-必须添加delete,renamePrimaryKey,writeCrossCompany方法publicvoiddelete(){//Checktoseeiftheassociatedd......
  • D365: 邮件附件中文名乱码问题
    在D365中,发送QQ,163,Foxmail邮箱如果附件名称中带中文名,收件箱的附件名称出现乱码解决方案增加c#classlibraryusingSystem;usingSystem.Collections.Generic;usin......
  • js-数据类型-作用域-作用域链-变量 审核中
    变量变量声明的几种方式varletconst相同之处varletconst都可以用来声明一个变量都拥有函数作用域与全局作用域不同之处var声明的变量有变量提升而let......
  • 内容审核入门逻辑
    在不同公司,对审核类职位的划分标准不同,比如有内容安全审核、内容推荐审核、内容质量审核等类似职位。虽然在侧重点和具体操作上有所不同,但有许多逻辑都是共通的。为了避免......
  • shit juejin 审核不通过 All In One
    shitjuejin审核不通过AllInOne文章内容:内容不适合发布https://juejin.cn/book/6844733795329900551/section/6876001660431400967MMP审核半天告诉我内容不......