salesforce零基础学习(七十三)ProcessInstanceWorkItem/ProcessInstanceStep/ProcessInstanceHistory浅谈

对于审批流中,通过apex代码进行审批操作一般都需要获取当前记录对应的ProcessInstanceWorkitem或者ProcessInstanceStep然后执行Approval.process操作。曾几何时,一直很狭隘的以为ProcessInstanceWorkItem和ProcessInstanceStep差距很小,差距仅在于ProcessInstanceWorkItem存储的是审批流的最新的一条,ProcessInstanceStep存储的是所有的审批步骤。其实这个理解是有一些偏差的。

一. ProcessInstanceWorkItem

  文档上ProcessInstanceWorkItem的解释为 代表一个用户的Pending的审批请求。我们知道,审批的情况除了Pending以外还有很多的状态,比如Approved, Fault, Held, NoResponse, Pending, Reassigned, Rejected,Removed,Started.这些状态中,只有Pending的状态下才会在ProcessInstanceWorkItem保留记录,其他情况下记录会删除。因为ProcessInstanceWorkItem只存在Pending状态,所以ProcessInstanceWorkItem表没有Status字段,有的情况下就比较多余了。

ProcessInstanceWorkItem相关的查询:

1.直接查询 : SELECT CreatedById, CreatedDate, OriginalActorId, IsDeleted, ActorId, SystemModstamp, ProcessInstanceId, Id FROM ProcessInstanceWorkitem

2.通过ProcessInstance进行子查询: SELECT Id, (SELECT Id, ActorId, ProcessInstanceId FROM Workitems) FROM ProcessInstance

二.ProcessInstanceStep

 ProcessInstnceStep为当审批流进行下一步动作的时候便会生成记录,不像ProcessInstanceWorkitem,它记录着所有经历过的步骤以及每个步骤的意见,所以其拥有Status字段用来记录审批的各个状态和comments记录审批意见。

1.直接查询:SELECT ActorId, Comments, CreatedById, CreatedDate, OriginalActorId, ProcessInstanceId, Id, StepStatus, SystemModstamp FROM ProcessInstanceStep

2.通过ProcessInstance进行子查询:SELECT Id, (SELECT Id, StepStatus, Comments FROM Steps) FROM ProcessInstance

三.ProcessInstanceHistory

有时候我们需要获取审批的历史信息,用来进行相关审批节点的展示。这个时候我们就可以使用ProcessInstanceHistory。ProcessInstanceHistory是salesforce提供的一个只读的,将ProcessInstanceWorkItem和ProcessInstanceStep结果结合在一起的审批历史表,通常情况下搜索时建议使用子查询方式查询。

通过ProcessInstance进行子查询:SELECT Id, (SELECT Id, StepStatus, Comments FROM StepsAndWorkitems) FROM ProcessInstance

四.关于审批流

我们在配置审批流的时候,会配置当节点审批通过或者失败时的操作,比如更新字段或者发邮件等等操作。如果执行了更新的字段操作,触发了此对象的trigger的时候。在trigger里面如果要是获取审批状态有可能获取不到,因为ProcessInstanceStep或者ProcessInstanceWorkItem是异步生成的。在执行trigger的时候,有可能没有生成,所以在trigger里面不要写关于此条记录的审批状态等操作。

总结:如果针对正常的审批操作,可以使用ProcessInstanceWorkItem或者ProcessInstanceStep进行操作。针对查询历史,使用ProcessInstanceHistory。篇中有错误的地方欢迎指出,有问题欢迎留言。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杨建荣的学习笔记

一条报警信息的快速处理和分析(r9笔记第99天)

下午的时候收到这么一条报警。 ZABBIX-监控系统: ------------------------------------ 报警内容: Too many...

3386
来自专栏数据和云

SQL审核:OR展开与子查询优化案例详解

黄廷忠(网名:认真就输) 云和恩墨技术专家 个人博客:http://www.htz.pw/ 本篇整理内容是黄廷忠在“云和恩墨大讲堂”微信分享中的讲解案例,S...

3474
来自专栏数据和云

Oracle智能之SQL诊断:SQL Tuning Advisor推荐执行计划

编辑手记:在前一段,一篇智能数据库优化的论文引起广泛的关注,其实在 Oracle 数据库中,已经引入了大量自动化和智能化的方法去进行自动调节,包括在 SQL 层...

2865
来自专栏乐沙弥的世界

收缩Oracle数据文件

      最近有网友提到收缩Oracle数据文件的问题,这是DBA经常碰到的一个常见问题。通常我们需要收缩相应的数据文件以减少来自磁盘空间的压力以及提高数据库...

762
来自专栏IT大咖说

如何让数据增量更新节省资源,耗时减半

内容来源:本文内容由阿里大数据计算服务(MaxCompute)团队投稿提供。IT 大咖说(微信id:itdakashuo)经授权发布,转载请标明出处。

845
来自专栏杨建荣的学习笔记

复杂SQL性能优化的剖析(一)(r11笔记第36天)

今天本来是处理一个简单的故障,但是发现是一环套一环,花了我快一天的时间。 开始是早上收到一条报警: 报警内容: CPUutilization is too hi...

35612
来自专栏杂烩

Mycat基准测试报告 原

好久没上OSC,上面安排测下Mycat,于是申请服务器,花了两个周做出这个东西,供以借鉴。

1301
来自专栏WindCoder

网易MySQL微专业学习笔记(十一)-MySQL业务优化与设计

这个系列属于个人学习网易云课堂MySQL数据库工程师微专业的相关课程过程中的笔记,本篇为其“MySQL业务优化与设计”中的MySQL数据类型相关笔记。

571
来自专栏测试开发架构之路

关于SQL表字段值缺失的处理办法

在计算收益率时候,  收益率 = 收益 / 成本 一、如果成本为0,NULL,此时无法计算收益率; 方法: 1.将成本为0的数据 运算 (case when  ...

3265
来自专栏Python爬虫实战

MySQL从零开始:数据库简介

从字面意思理解,首先数据库是一个存放东西的库,里面存的东西是数据。以下解释来自百度百科:

822

扫码关注云+社区