0
点赞
收藏
分享

微信扫一扫

AgilePLM列表值操作

余寿 2022-04-17 阅读 52

概要

Agile提供的官方文档中对于列表值的操作不是特别详细。对于列表项的修改也是缺失。特此将列表的操作心得分享出来,一起交流和学习。

层叠列表创建

相当于在控制台中创建一个新的列表。简单列表的操作在官方文档中也有提到。大家可以参考。

本文给出案例代码创建的是层叠列表:省市区。列表项有:江苏省,湖南省。。。

API文档中给出的方法在Agile9.3.6版本中已经deprecated了,但文档并没有更新。推荐大家使用本文的方法。

	/**
	 * 列表创建
	 * 单元测试类
	 */
	@Test
	public void createAdminList() throws APIException {
		IAgileSession session = ISessionUtils.getAdminSession();
		//使用管理员session获取列表库
		IListLibrary listLib = session.getAdminInstance().getListLibrary();
		HashMap<Integer,Object> map = new HashMap<Integer,Object>();
		map.put(IAdminList.ATT_NAME, "省市区");
		map.put(IAdminList.ATT_APINAME, "list_ssq");
		map.put(IAdminList.ATT_DESCRIPTION, "省市区(api测试)");
		map.put(IAdminList.ATT_ENABLED, new Boolean(true));
		map.put(IAdminList.ATT_CASCADED, new Boolean(true));
		//创建列表
		IAdminList adminList = listLib.createAdminList(map);
		//得到顶层列表项(国家)
		IAgileList countrylist = adminList.getValues();
		//推荐大家使用2个参数的方法的.单参数的方法已经deprecated
		countrylist.addChild("湖南省", "hunan");
		IAgileList jiangsu = (IAgileList)countrylist.addChild("江苏省", "jiangsu");
		
		//继续给江苏追加城市
		jiangsu.addChild("南京","nanjing");
		jiangsu.addChild("无锡","wuxi");
		jiangsu.addChild("常州","changzhou");
		IAgileList suzhou = (IAgileList)jiangsu.addChild("苏州","suzhou");
		//继续给苏州追加区域
		suzhou.addChild("姑苏区","gusuqu");
		suzhou.addChild("工业园区","gongyeyuanqu");
		
		//保存列表值
		adminList.setValues(countrylist);
		System.out.println("执行成功!");
	}

执行结果-列表-省市区:

列表项

 层叠列表修改

这部分内容,api文档也有提及,比较简单。直接分享参考代码:

	/**
	 * 列表修改
	 * 单元测试类
	 */
	@Test
	public void updateAdminList() throws APIException {
		//获取管理员session
		IAgileSession session = ISessionUtils.getAdminSession();
		//根据API名称获取列表
		IAdminList adminList = session.getAdminInstance().getListLibrary().getAdminList("list_ssq");
		if(adminList != null) {
			//修改描述
			adminList.setDescription("省市区2(api测试)");
			//修改名称
			adminList.setName("省市区2");
			//禁用启用
			adminList.enable(true);
			//列表删除
			adminList.delete();
			//列表项是否可编辑
			adminList.isListItemsEditable();
			//列表项是否只读
			adminList.isReadOnly();
		}
	}

层叠列表项修改

这部分内容目前在官方文档中没有找到。下面是我的实践,分享参考代码给大家。

	@Test
	public void testUpdateAgileListEntry() throws APIException {
		IAgileSession session = ISessionUtils.getAdminSession();
		// 根据API名称获取列表
		IAdminList adminList = session.getAdminInstance().getListLibrary().getAdminList("list_ssq");
		if (adminList != null) {
			// 获取列表下的所有项
			IAgileList list = adminList.getValues();
			if (list != null) {
				// 通过api名称获取列表项,必须是叶子节点才能查询到
				Object childNode = list.getChildNode("湖南");
				if (childNode instanceof IAgileList) {
					IAgileList child = (IAgileList) childNode;
					// 修改列表项描述
					child.setDescription("湖南省描述2");
					// 修改列表项名称
					// child.setValue("湖南省2");
					System.out.println("湖南修改成功");
				}

				// 如果想获取层叠列表中的父节点,目前发现只能通过这个方法,递归往下找
				List<IAgileList> childNodes = (List<IAgileList>) list.getChildNodes();
				if (childNodes != null && childNodes.size() > 0) {
					for (IAgileList child : childNodes) {
						if (child.getAPIName().equals("jiangsu")) {
							child.setDescription("jiangsu描述");
							System.out.println("jiangsu修改成功");
						}
					}
				}
				adminList.setValues(list);
			}
		}
	}

父节点是否有更好的方法搜索出来?如果有知道的小伙伴欢迎留言。感觉每次要递归查询挺烦的。

修改后效果截图:

 

举报

相关推荐

0 条评论