知识积累
常用类记录
wt.acce.AcceControlHelper.manager.hasAcce(Object obj, AccePermiion acce); 判断是当前用户对指定对象是否有指定操作的权限,可以通过策略管理器配置权限。
wt.content.contentHelper doc = (WTDocument)ContentHelper.service.getContents(doc); List items = ContentHelper.getContentListAll(doc); wt.content.ContentItem wt.lifycycle.State State[] state = State.getStateSet();//返回系统中所有存在的state wt.query.QuerySpec QuerySpecc qs = new QuerySpec(WTDocument.cla); qs.setAdvancedQueryEnabled(true);// ClaAttribute ca = new ClaAttribute(WTDocument.cla, WTDocument.PERSIST_INFO+\".\" +PersistInfo.CREATE_STAMP); OrderBy orderBy = new OrderBy(ca,true); qs.appendOrderBy(orderBy,new int[]{0})//设置查询结果的排序列 qs.setQueryLimit(size);//设置查询结果的限制数量
wt.query.SearchCondition
new SearchCondition(WTDocument.cla,WTDocument.CREATE_TIMESTAMP, SearchCondition.GREATER_THAN_OR_EQUAL,timestamp) 注:参数分别是:类、关键字、条件、内容,示例中意思是构建一个查询条件:查询WTDocument,且WTDocument的创建时间大于等于指定的timestamp。
wt.seion.SeionContext WTPrincipal admin = SeionHelper.manager.getAdministrator();//获取管理员用户
WTPrincipal current = SeionContext.setEffectivePrincipal(admin);//设置环境为管理员用户,且
返回当前用户。
SeionContext.setEffectivePrincipal(current);//目标管理员用户处理完任务后,切换回原来的
用户。
wt.type.ClientTypedUtility TypeDefinitionReference tdr1 = ClientTypedUtility.getTypeDefinitionReference(WTUtil.qualifyTypeId(CmQuestionConstants.QUESTIONITEM_SOFTTYPE)); 注:根据类型id获取“类型定义引用”。其中WTUtil.qualifyTypeld用于修正id。
public static final String QUESTIONITEM_SOFTTYPE=\"wt.doc.WTDocument|QuestionItem\"; 配置
配置BackgroundMethodServer监听队列处理信息
1.向site.conf中添加行: 2.windchill shell中执行 xconfmanager -p 更新
代码实例 关于查询
public static Vector getLatestQues(int size) throws Exception {
boolean flag = SeionServerHelper.manager.setAcceEnforced(false);
try {
Vector ret = new Vector();
QuerySpec qs = new QuerySpec(WTDocument.cla);
qs.setAdvancedQueryEnabled(true);
TypeDefinitionReference tdr1
= ClientTypedUtility.getTypeDefinitionReference(WTUtil.qualifyTypeId(CmQuestionConstants.QUESTIONITEM_SOFTTYPE));
long branchId1 = tdr1.getKey().getBranchId();
qs.appendWhere(new SearchCondition(WTDocument.cla, WTDocument.TYPE_DEFINITION_REFERENCE + \".\" + TypeDefinitionReference.KEY + \".\" + TypeDefinitionForeignKey.BRANCH_ID,
SearchCondition.EQUAL, branchId1), new int[]{0});
qs = new LatestConfigSpec().appendSearchCriteria(qs);
qs.appendAnd();
qs.appendWhere(new SearchCondition(WTDocument.cla, WTDocument.CREATE_TIMESTAMP, SearchCondition.GREATER_THAN_OR_EQUAL, CmDateUtil.getCurrentDayZeroOracleTime()), new int[]{0});
ClaAttribute ca = new ClaAttribute(WTDocument.cla, WTDocument.PERSIST_INFO + \".\" + PersistInfo.CREATE_STAMP);
OrderBy orderBy = new OrderBy(ca, true);
qs.appendOrderBy(orderBy, new int[]{0});
if (size != -1) {
qs.setQueryLimit(size);
}
Debug.P(\"getLatestKnows sql :\" + qs.toString());
QueryResult qr = null;
try {
qr = PersistenceHelper.manager.find((StatementSpec) qs);
} catch (PartialResultException pe) {
qr = pe.getQueryResult();
}
CmQuestionItemInfo info = null;
WTDocument doc = null;
CmUserInfo userInfo = null;
HashMap ibaMap = null;
while (qr.hasMoreElements()) {
doc = (WTDocument) qr.nextElement();
info = new CmQuestionItemInfo();
ibaMap = new HashMap();
CmIBAHelper.getIBAValuesLite(doc, ibaMap);
userInfo = CmQuestionUtil.getCmUserInfo(doc.getCreator().getPrincipal());
addIBAValueToCmQuestionItemInfo(info, ibaMap);
info.setOid(CmReferenceFactoryUtil.getOID(doc));
info.setQuestionTitle(doc.getName());
info.setQuestionContent(doc.getDescription());
info.setUserInfo(userInfo);
info.setQuestionState(doc.getLifeCycleState().getFullDisplay());
info.setCreateTime(doc.getCreateTimestamp());
info.setModifyTime(doc.getModifyTimestamp());
info.setDocNumber(doc.getNumber());
WTPrincipal modifier = (WTPrincipal) doc.getModifier().getObject();
info.setModifyId(modifier.getPersistInfo().getObjectIdentifier().getId());
ret.add(info);
}
return ret;
} finally {
SeionServerHelper.manager.setAcceEnforced(flag);
}
} 错误解答
java.io.IOException: ORA-22920: 未锁定含有 LOB 值的行
原因:代码中未添加事物机制。
修改类方法参数类型后报错:java.lang.NoSuchMethodError 原因:该方法修改了,执行ant会编译该类,但是,其他调用此方法的类没有修改导致未执行再次编译,而原来编译中执行的该方法参数不变,所以报此方法找不到的错误。
关于JSP javascript、java的值
JSP中,在服务器端运行,javascript在客户端运行,所以,javascript中可以取得java中的参数值,反过来不行。
window.open(\'...?para1m=\'+param1,\'_blank\');弹出新的窗口,且带url传参。 window.parent A中使用iframe、frame B,B中使用parent可操作A对象; window.opener A中使用弹出窗口生成B, B中可使用opener操作A对象;
windchill知识 配置初始化规则