| 工作流获取指定名称的职位函数使用说明该参与人的应用场景较多,比如在集团性的企业中,每个子公司的会计编制凭证后,由该会计所在子公司的出纳复核,所在公司的财务主管审批,而在HR系统中,作为一个职位关系,财务主管是有组织性的,如果通过职位关系去指定,必须要选定一个具体的组织,大多时候是将该集团下属子公司的财务主管职位去一一指定,再通过权限控制,维护很不方便,逻辑也不严谨,此时可以通过工作流函数节点的指定名称的职位函数去比较方便地实现(该函数会在5.4的BOS包中正式提供,如想使用,也可用函数编辑器编写设计,方法如下): 1.该函数配置界面图如下
2.该函数的脚本内容如下:
com.kingdee.eas.basedata.person.IPerson personFactory =com.kingdee.eas.basedata.person.PersonFactory.getLocalInstance(__bosContext);
com.kingdee.eas.basedata.org.AdminOrgUnitInfo unitInfo = personFactory.getPrimaryAdminOrgUnit(com.kingdee.bos.util.BOSUuid.read(personId));
com.kingdee.eas.basedata.org.IPosition positionFactory = com.kingdee.eas.basedata.org.PositionFactory.getLocalInstance(__bosContext);
com.kingdee.eas.basedata.org.PositionCollection positions = positionFactory.getPositionCollection("WHERE adminOrgUnit.id='" + unitInfo.getId() + "'");
java.util.Set perSet = new java.util.HashSet();
for (int i=0; i<positions.size(); i++) {
com.kingdee.eas.basedata.org.PositionInfo pos = positions.get(i);
if (positionName.equals(pos.getName())) {
com.kingdee.eas.basedata.person.PersonCollection personCol = positionFactory.getAllPersons(pos.getId());
for (int j=0; j<personCol.size(); j++) {
perSet.add(personCol.get(j).getId().toString());
}
}
}
java.lang.String[] persons = new java.lang.String[perSet.size()];
persons = perSet.toArray(persons);
return persons;
编写完成后,请将附件中的函数文件放入 本机BOS的该目录下: BOSModular\wfdesigner\eclipse\plugins\com.kingdee.bos.workflowdesigner_5.4.0\functions 之后重启BOS。 使用范例:提交凭证的人员所在组织的负责人职位进行审批活动 1. 定义以下三个变量:
变量说明: 职位名称:所需调用的职位名称,可以赋初始固定值(如例子:负责人),也可以动态地去获取 参照人员ID:所需参照的活动参与人的变量输出到该变量,供函数使用。 执行人员ID:通过函数转换获取到的 符合(参照人员ID+职位名称)的参与人变量。 2. 对参照人员变量进行输出绑定 如下图,在提交节点,将左树的对象输出绑定到参照人员ID 这个变量
3.函数节点绑定情况如图
4.将需调用的参与人关系设置为输出的变量就可以了(该实例中,将审批节点参与人设置为 执行人员ID 这个变量,一切就OK了,_)
| |||||||||||||||||||||||||||||||||||||||||||