文章結束給大家來個程序員笑話:[M]
???????????? 在XT上可以設預條目模板(EntryTemplate)來到達模板化制控上傳文檔安全性和屬性等信息的作用。而EntryTemplate本身可以與Folder相干聯(一個Folder可以關聯多個EntryTemplate),這樣我們在XT上的某個Folder下上傳便可按照我們所要設置的值行進設置文檔安全性和屬性信息了,而省去了手動作操,這對zhy天津分公司的業務很有必要,原因是戶客在這里體總上有三個基本組,是對全部Folder下的document備具雷同權限,而另外另個殊特的組,可能根據不同Folder的不同即不同。
???????????? 這些任務在XT上可以松輕通過配置來實現,但作為制定化開辟的應用程序,在最初實現時戶客并無此求要,最初有種這殊特需求滿可以制定殊特的權限管理來實現,但這僅能標指,原因是這樣也會是戶客做兩套作動,一個是在XT上行進,另一個則是在制定的應用上行進。最好的法辦是后行進的應用可以直接讀取XT的相干EntryTemplate權限在對應folde下傳documet時,行進相干設置。
???????????? 不過,由于FileNet本身并沒有供給直接的根據Folder獲得EntryTemplate的API。而如果要通過遍歷整個EntryTemplate來處理獲得folder對應的EntryTemplate,一者須要應用維持一種關系(從定一意義上講,還是得戶客行進兩套作動,而不是不時致一的狀態),者二遍歷的任務量也相當大。
???????????? 經過分析zhy天津分公司EntryTemplate和Folder的特色,可以發在現Folder的Annotations中包含著EntryTemplate對應文檔的列序號,可以根據它來獲得相干EntryTemplate的內容,從而解析出相干權限,行進設置。本例案的殊特性在于Folder的Annotations中僅存在EntryTemplate的列序號(以件文式形存儲,須要解析出特定notes的值)。體具作操過程意示代碼如下所示:
記不清有多少個夜晚,在我翻閱紙張的指間滑落;記不清有多少支蠟燭,在我的凝視中化為灰燼。逝者如斯,我不時刻刻會聽見自己對生命承諾的余音,感到歲月的流轉在漸漸稀釋我的年少無知,我愿自己是一只上足了發條的時鐘,在晝夜不停的流轉中留下自己充實的每一刻。
//獲得folder關聯entry template 的列序的idpublic void testWhatIsFolderAnnotationsTextId(){Connection connection = CEHelper.getConnection();CEHelper.pushSubject(connection);ObjectStore os = CEHelper.getObjectStore(connection);try{Folder folder = Factory.Folder.fetchInstance(os, new Id("{F78C8CE7-94FE-47CA-94E4-19A78EEBBF9E}"), null);AnnotationSet get_Annotations = folder.get_Annotations();Iterator iterator = get_Annotations.iterator();while(iterator.hasNext()){Annotation annotation = (Annotation)iterator.next();logger.info("annotation.get_Name() = " + annotation.get_Name());DocumentBuilderFactory docBuilderFactory = javax.xml.parsers.DocumentBuilderFactory.newInstance();DocumentBuilder docBuilder = null;docBuilder = docBuilderFactory.newDocumentBuilder();org.w3c.dom.Document doc = docBuilder.parse(annotation.accessContentStream(0));NodeList parameters = doc.getElementsByTagName("object");Node rootNode = null;if (parameters != null) {rootNode = parameters.item(0);}Element ele = (Element)rootNode;NodeList elementsByTagName = ele.getElementsByTagName("setting");Node item = elementsByTagName.item(1);logger.info("item.getNodeName() = " + item.getNodeName());logger.info("item.getNodeValue() = " + item.getNodeValue());logger.info("item.getTextContent() = " + item.getTextContent());}}catch(Exception e){e.printStackTrace();}finally{CEHelper.popSubject();}}//根據列序ID獲得應相entry template的安全性等內容public void testGetVersionSeries(){Connection connection = CEHelper.getConnection();CEHelper.pushSubject(connection);ObjectStore os = CEHelper.getObjectStore(connection);try{String docId = "{60CFDD81-C2DA-46F3-A98E-B49A125930F9}";VersionSeries fetchInstance = Factory.VersionSeries.fetchInstance(os, new Id(docId), null);logger.info(fetchInstance.get_Id().toString());Document doc = (Document)fetchInstance.get_CurrentVersion();org.w3c.dom.Document w3cDoc = WcmXMLUtil.getDocumentFromInputStream(doc.accessContentStream(0));EntryTemplateParser parser = new EntryTemplateParser(w3cDoc);String className = parser.getClassName();String classId = parser.getId();List permissionList = parser.getPermissionList();List propertyList = parser.getPropertyList();Iterator iterator = permissionList.iterator();while(iterator.hasNext()){String item = (String)iterator.next();logger.info(item.toString());}}catch(Exception e){e.printStackTrace();}finally{CEHelper.popSubject();}}//設置文檔安全性public void testPermission(){Connection connection = CEHelper.getConnection();CEHelper.pushSubject(connection);ObjectStore os = CEHelper.getObjectStore(connection);try{Document doc = Factory.Document.createInstance(os, "GeneralClass");AccessPermissionList createList = Factory.AccessPermission.createList();AccessPermission createInstance2 = Factory.AccessPermission.createInstance();createInstance2.set_AccessMask(131073);createInstance2.set_AccessType(AccessType.ALLOW);createInstance2.set_GranteeName("#AUTHENTICATED-USERS");createInstance2.set_InheritableDepth(-1);AccessPermission createInstance3 = Factory.AccessPermission.createInstance();createInstance3.set_AccessMask(998871);createInstance3.set_AccessType(AccessType.ALLOW);createInstance3.set_GranteeName("fnadmins");createInstance3.set_InheritableDepth(-1);createList.add(createInstance2);createList.add(createInstance3);doc.getProperties().putValue("DocumentTitle", "log4j_3.log");String minType = "application/octet-stream";doc.set_MimeType(minType);doc.checkin(AutoClassify.DO_NOT_AUTO_CLASSIFY, CheckinType.MAJOR_VERSION);doc.save(RefreshMode.REFRESH);Folder folder = Factory.Folder.fetchInstance(os, new Id("{0BCA05B3-6A0A-407C-B17A-503FA4070193}"), null);ReferentialContainmentRelationship rcr = folder.file(doc, AutoUniqueName.NOT_AUTO_UNIQUE, null, DefineSecurityParentage.DO_NOT_DEFINE_SECURITY_PARENTAGE);rcr.save(RefreshMode.REFRESH);doc.set_Permissions(createList);doc.save(RefreshMode.NO_REFRESH);}catch(Exception e){e.printStackTrace();}finally{CEHelper.popSubject();}}
文章結束給大家分享下程序員的一些笑話語錄: 愛情觀
愛情就是死循環,一旦執行就陷進去了。
愛上一個人,就是內存泄露--你永遠釋放不了。
真正愛上一個人的時候,那就是常量限定,永遠不會改變。
女朋友就是私有變量,只有我這個類才能調用。
情人就是指針用的時候一定要注意,要不然就帶來巨大的災難。