设置安全性根据Folder关联的条目模板设置上传文档安全性
文章結(jié)束給大家來(lái)個(gè)程序員笑話:[M]
???????????? 在XT上可以設(shè)預(yù)條目模板(EntryTemplate)來(lái)到達(dá)模板化制控上傳文檔安全性和屬性等信息的作用。而EntryTemplate本身可以與Folder相干聯(lián)(一個(gè)Folder可以關(guān)聯(lián)多個(gè)EntryTemplate),這樣我們?cè)?span style="font-family:Calibri;">XT上的某個(gè)Folder下上傳便可按照我們所要設(shè)置的值行進(jìn)設(shè)置文檔安全性和屬性信息了,而省去了手動(dòng)作操,這對(duì)zhy天津分公司的業(yè)務(wù)很有必要,原因是戶客在這里體總上有三個(gè)基本組,是對(duì)全部Folder下的document備具雷同權(quán)限,而另外另個(gè)殊特的組,可能根據(jù)不同Folder的不同即不同。
???????????? 這些任務(wù)在XT上可以松輕通過(guò)配置來(lái)實(shí)現(xiàn),但作為制定化開(kāi)辟的應(yīng)用程序,在最初實(shí)現(xiàn)時(shí)戶客并無(wú)此求要,最初有種這殊特需求滿可以制定殊特的權(quán)限管理來(lái)實(shí)現(xiàn),但這僅能標(biāo)指,原因是這樣也會(huì)是戶客做兩套作動(dòng),一個(gè)是在XT上行進(jìn),另一個(gè)則是在制定的應(yīng)用上行進(jìn)。最好的法辦是后行進(jìn)的應(yīng)用可以直接讀取XT的相干EntryTemplate權(quán)限在對(duì)應(yīng)folde下傳documet時(shí),行進(jìn)相干設(shè)置。
???????????? 不過(guò),由于FileNet本身并沒(méi)有供給直接的根據(jù)Folder獲得EntryTemplate的API。而如果要通過(guò)遍歷整個(gè)EntryTemplate來(lái)處理獲得folder對(duì)應(yīng)的EntryTemplate,一者須要應(yīng)用維持一種關(guān)系(從定一意義上講,還是得戶客行進(jìn)兩套作動(dòng),而不是不時(shí)致一的狀態(tài)),者二遍歷的任務(wù)量也相當(dāng)大。
???????????? 經(jīng)過(guò)分析zhy天津分公司EntryTemplate和Folder的特色,可以發(fā)在現(xiàn)Folder的Annotations中包含著EntryTemplate對(duì)應(yīng)文檔的列序號(hào),可以根據(jù)它來(lái)獲得相干EntryTemplate的內(nèi)容,從而解析出相干權(quán)限,行進(jìn)設(shè)置。本例案的殊特性在于Folder的Annotations中僅存在EntryTemplate的列序號(hào)(以件文式形存儲(chǔ),須要解析出特定notes的值)。體具作操過(guò)程意示代碼如下所示:
每日一道理記不清有多少個(gè)夜晚,在我翻閱紙張的指間滑落;記不清有多少支蠟燭,在我的凝視中化為灰燼。逝者如斯,我不時(shí)刻刻會(huì)聽(tīng)見(jiàn)自己對(duì)生命承諾的余音,感到歲月的流轉(zhuǎn)在漸漸稀釋我的年少無(wú)知,我愿自己是一只上足了發(fā)條的時(shí)鐘,在晝夜不停的流轉(zhuǎn)中留下自己充實(shí)的每一刻。
//獲得folder關(guān)聯(lián)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();}}//根據(jù)列序ID獲得應(yīng)相entry template的安全性等內(nèi)容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();}}//設(shè)置文檔安全性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();}}
文章結(jié)束給大家分享下程序員的一些笑話語(yǔ)錄: 愛(ài)情觀
愛(ài)情就是死循環(huán),一旦執(zhí)行就陷進(jìn)去了。
愛(ài)上一個(gè)人,就是內(nèi)存泄露--你永遠(yuǎn)釋放不了。
真正愛(ài)上一個(gè)人的時(shí)候,那就是常量限定,永遠(yuǎn)不會(huì)改變。
女朋友就是私有變量,只有我這個(gè)類(lèi)才能調(diào)用。
情人就是指針用的時(shí)候一定要注意,要不然就帶來(lái)巨大的災(zāi)難。
轉(zhuǎn)載于:https://www.cnblogs.com/jiangu66/archive/2013/04/29/3050654.html
總結(jié)
以上是生活随笔為你收集整理的设置安全性根据Folder关联的条目模板设置上传文档安全性的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 树莓派 配置 OMV 搭建 NAS(六)
- 下一篇: ocpm