t_parent_sfo_obj 这张表记录了 父流程和子流程的关联关系,你可以主动用代码创建 一条表里面的记录。
如果要取消 父流程和子流程 的关联(即去掉tab页里面的子流程) ,在t_parent_sfo_obj 这张表找到具体的某条记录,设置hs_is_deleted =1 即可取消关联。
部分代码如下:
IBusObject bo = s.createObject("parent_sfo_obj");
bo.setField("hs_uuid", s.generateUUID());
bo.setField("hs_bodef_id", bo.getObjectDef().getUUID());
bo.setField("c_bo_name", childboname);
bo.setField("c_sf_oid", bodefid);
bo.setField("p_bo_name", parentboname);
bo.setField("c_oid", sfoid);
bo.setField("p_oid", fuuid);
这样可以主动关联父sfo和子sfo,在父sfo的页面上就生成了一个 tab页,默认名称是 子XXX 。
如果父流程里面有 N个子流程,那么 sfo.getchildren() 方法只能抓到所有的子sfo,无法按类型抓取 sfo。
按类型抓取sfo,部分代码如下:
IDataQuery dq = session.createDataQuery();
try {
dq.setTarget(session.getObjectDef("parent_sfo_obj"));
dq.addFilter("p_oid",SATConstants.SQL_OP_EQUAL, sfo.getOID());
dq.addFilter("c_bo_name",SATConstants.SQL_OP_EQUAL,boname);
dq.addFilter("hs_is_deleted",SATConstants.SQL_OP_EQUAL,"0");
dq.addField("c_oid");
IDataCollection dc = dq.query(session);
while (dc.next()) {
IBusObject bo = dc.getObject();
String oid = bo.getStringField("c_oid");
childrenuuid.add(oid);
}
这样能按类型抓取父sfo下的 特定类型子sfo ,抓到了子sfo的uuid集合后,后面就可以用代码抓取子sfo了。