④内部公开请勿外传业务场景某集团公司的调薪单流程是审批需要根据职员当前职等来作为流程分支条件设置的,如下图所示是某客户8612升级之前设置的调薪单流程,从图中我们可以看出提交单据后,初级、中级、高级职等的职员走的是审批流不同分支。然而,升级8612之后,这个流程直接取不到分录职员信息,以及职员关联属性职等等信息了。因为新版定调薪做了大调整,和普通的单据不一样,不是直接存储固定的单据分录表中,而是每个单据都需要选择一个方案,每一个方案都对应一张动态表,分录的数据存在动态表里。那么这个客户的流程需要怎么实现呢?这就需要发挥工作流的高级运用,工作流脚本的运用(脚本的运用,要求实施人员有sql基础及代码能力)。1、分析业务需求和上面三个sql语句。我们需要创建以下三个流程变量(personId、entryTableName、jobGradeNumber)1/3④内部公开请勿外传2、在子流程开始流程后,增加一个脚本流程,在脚本任务添加下面的执行sql,以下几段sql脚本放到同一个任务中。先查询单据对应的分录动态表名,赋给entryTableName变量Stringsql;sql="selectb.FBillEntryTableName,FAdjustBaseTableNamefromT_HR_SAdjustSalaryApplyaLEFTOUTERJOINT_HR_SAdjSalaryTableRelationbona.FAdjustSalaryRuleID=b.FAdjustSalaryRulewherea.fid='"+billId+"'";varrowSet=com.kingdee.eas.util.app.DbUtil.executeQuery(__bosContext,sql);while(rowSet.next()){entryTableName=rowSet.getString(1);}再查询分录第一条分录的员工id,(如果有其他字段,可以自行添加。)sql="selectb.fpersonidfromT_HR_SAdjustSalaryApplyaLEFTOUTERJOIN"+entryTableName+"bona.fid=b.fbillidwherea.fid='"+billId+"'";rowSet=com.kingdee.eas.util.app.DbUtil.executeQuery(__bosContext,sql);if(rowSet.next()){personId=rowSet.getString(1);}最后根据员工id,查询当前员工最新职等,(如果要查询职级,可以把t_hr_jobGrade表改为t_hr_jobLevel,FJOBGRADEID改为FJOBLEVELID。)sql="selectfname_l2fromt_hr_jobGradewherefidin(selectFJOBGRADEIDfromT_HR_EmpPostRankwhereFPERSONID='"+personId+"'andFLEFFDT={ts'2199-12-31'})";rowSet=com.kingdee.eas.util.app.DbUtil.executeQuery(__bosContext,sql);if(rowSet.next()){jobGradeNumber=rowSet.getString(1);}后面可以根据jobGradeNumber字段来判断走哪条流程最后,完整的流程调整后效果图如下:2/3④内部公开请勿外传3/3