④内部公开请勿外传业务场景某集团公司的调薪单流程是审批需要根据职员当前职等来作为流程分支条件设置的,如下图所示是某客户8612升级之前设置的调薪单流程,从图中我们可以看出提交单据后,初级、中级、高级职等的职员走的是审批流不同分支。然而,升级8612之后,这个流程直接取不到分录职员信息,以及职员关联属性职等等信息了。因为新版定调薪做了大调整,和普通的单据不一样,不是直接存储固定的单据分录表中,而是每个单据都需要选择一个方案,每一个方案都对应一张动态表,分录的数据存在动态表里(T_HR_SAdjSalaryTableRelation定调薪申请分录映射表)。那么这个客户的流程需要怎么实现呢?这就需要发挥工作流的高级运用,工作流脚本的运用(脚本的运用,要求实施人员有sql基础及代码能力)。下面我还是用这个案例,一步步教大家实现。首先,需要了解对应的业务数据存储在哪些表,取数逻辑。在8612中新版定调薪单,每一个调薪单据都需要选择“定调薪方案”,选择这个方案后就可以确定分录信息保存在哪个业务数据表中。1/6④内部公开请勿外传提交单据后,根据单据id查询分录信息保存在哪个业务数据表。查询SQL如下:---1、根据单据id查询定调薪对应表名:定调薪申请分录表名selectb.FBillEntryTableNameas'定调薪申请分录表名',FAdjustBaseTableNameas'定调薪基表'fromT_HR_SAdjustSalaryApplyaLEFTOUTERJOINT_HR_SAdjSalaryTableRelationbona.FAdjustSalaryRuleID=b.FAdjustSalaryRulewherea.fid='单据id'如图查到的这个单据定调薪申请分录信息保存在这个表中T_HR_SAdjApplyEntry02cmp接下来,确定了分录信息存储的表名后,我们可以继续获取分录职员信息。SQL如下:---2、根据单据id、上一步获取到的分录动态表名(定调薪申请分录表名)查询单据分录职员fidselectb.fpersonidfromT_HR_SAdjustSalaryApplyaLEFTOUTERJOINT_HR_SAdjApplyEntry02cmpbona.fid=b.fbillidwherea.fid='单据id'查询到职员id后,可以继续查询该职员的当前职等名称SQL如下:---3、根据职员id查询职员当前职等名称selectfname_l2fromT_HR_JobGradewherefidin(selectFJobGradeIDfromT_HR_EmpPostRankwhereFPERSONID='职员id'andFLEFFDT={ts'2199-12-31'})转化成工作流脚本,并应用到流程中,可以这样做。写工作流脚本我们需要清楚我们需要哪些输入变量及输出变量1、分析业务需求和上面三个sql语句。我们需要创建以下三个流程变量(personId、entryTableName、jobGradeNumber)输入变量:单据id、职员id,其中单据id这个可以使用工作流bizObj.id代替不需要在定义流程变量,职员id需要我们自定义一个流程变量。2/6④内部公开请勿外传输出变量:定调薪申请分录表名、职员id、职等名称,需要我们自定义一个流程变量2、我们需要调整原有流程,在提交节点后增加三个脚本节点(如果不想要看到这么多个脚本节点,可以自行优化调整,此处我用三个独立的脚本节点让大家更好理解一些)1)第一个脚本节点的内容如下:2)第2个脚本节点内容如下:3/6④内部公开请勿外传3)第3个脚本内容如下最后,完整的流程调整后效果图如下:4/6④内部公开请勿外传End;可以举一反三,取职员其他关联属性,如取当前任职职位、入职日期、员工person实体的属性等等都可以参照这个来处理,只有清楚sql取数逻辑怎么写就可以。另外提报单也是动态表,如有工作流需要取提报单分录信息或者二开需要获取提报单相关的也可以参照这个帖子和以下查询逻辑提报单相关表T_HR_SchemeBillEntry单据分录,但不真正存储相应数据T_HR_SCalShemeTableRelation存储方案和提报单分录关系表T_HR_SBatchSubmitShemeBill单据头5/6④内部公开请勿外传每个提报方案对应一个表,是动态列表需要先根据提报方案查询出表名查询对应提报方案核算表名FCalShemeTableName在查询提单单的提报项目值。查询逻辑sql如下:---根据提单方案查询对应提报方案核算表名FCalShemeTableName示例:如下查询查到的表名为提报方案核算表名T_HR_SchemeBillEntry02cmp,提报单据分录表名:T_HR_SchemeBillEntry02cmpselectb.FCalShemeTableNameas'提报方案核算表名',FBillEntryTableNameas'提报单据分录表名'fromT_HR_SBatchSubmitShemeBillaLEFTOUTERJOINT_HR_SCalShemeTableRelationbona.FSubmitSchemeID=b.FSubmitSchemeIDwherea.fid='4i4AAAABFcixHbpc'--在跟进提报单单据id查询提报方案核算表T_HR_SchemeBillEntry02cmp的数据selectb.*fromT_HR_SBatchSubmitShemeBillaLEFTOUTERJOINT_HR_SchemeBillEntry02cmpbona.fid=b.fbillidwherea.fid='4i4AAAABFcixHbpc'--在跟进提报单单据id查询提报单据分录表T_HR_SchemeBillEntry02cmp的数据selectb.*fromT_HR_SBatchSubmitShemeBillaLEFTOUTERJOINT_HR_SchemeBillEntry02cmpbona.fid=b.fbillidwherea.fid='4i4AAAABFcixHbpc'6/6