如何通过链接源引用获取工作项ID?代码场景求助
提取工作项父子ID的解决方案
嘿,看你已经拿到了链接集合,接下来提取工作项ID其实很直接,我给你一步步讲清楚:
从父项链接中提取工作项ID
你当前的代码是通过findLinksByTarget查询指向目标工作项的父项链接,所以每个链接的**源(getSource())**就是父工作项的引用。我们可以这样提取ID:
// 遍历链接集合中的每一条父项链接 for (ILink link : linkCollection) { // 获取父工作项的引用 IReference parentRef = link.getSource(); // 先判断是否为工作项引用,避免类型转换异常 if (parentRef.isItemReference()) { // 将引用转换为工作项的ItemHandle IItemHandle parentItemHandle = parentRef.resolveItemHandle(); // 提取工作项ID(UUID转字符串) String parentWorkItemId = parentItemHandle.getItemId().toString(); // 这里可以根据需求打印、存储或使用ID System.out.println("父工作项ID: " + parentWorkItemId); } }
如果要提取子项ID(补充说明)
如果你之后需要查询子项链接(比如用findLinksBySource替代findLinksByTarget),那每个链接的**目标(getTarget())**就是子工作项的引用,逻辑完全类似:
// 假设这是查询子项链接得到的linkCollection for (ILink link : childLinkCollection) { IReference childRef = link.getTarget(); if (childRef.isItemReference()) { IItemHandle childItemHandle = childRef.resolveItemHandle(); String childWorkItemId = childItemHandle.getItemId().toString(); System.out.println("子工作项ID: " + childWorkItemId); } }
几个实用小提示
- 必须加上
isItemReference()判断,防止遇到非工作项类型的引用导致转换错误 getItemId()返回的是UUID类型,转成字符串用toString()就能满足绝大多数场景- 如果后续需要完整的工作项对象,可以用
itemManager.fetchCompleteItem()获取,但如果只需要ID的话,上面的代码就足够高效了
内容的提问来源于stack exchange,提问作者Rinkal Garg
相关产品推荐
相关产品推荐

