Mais conteúdo relacionado
Semelhante a AlfrescoとSolr(後編) (20)
Mais de Ashitaba YOSHIOKA (19)
AlfrescoとSolr(後編)
- 3. 自己紹介
‣ mryoshio
→ A社の社員
→ AlfrescoやLiferayのコンサルタント
→ ソースコードを読んだりカスタマイズしたりサポートしたり
→ Twitterとか色々なところにいます
→ もう少しPythonで遊びたいと思いつつできてない
→ 最近はこたつに入って仕事してます
- 5. AlfrescoとSolr
‣ Alfrescoとは
→ 英Alfresco社が提供するオープンソースソフトウェア。企業規模のコンテンツ
管理を行える。それ以外に,Webコンテンツ管理やコラボレーションを低コ
ストで行える
‣ Solrとは
→ Apache Luceneプロジェクトから派生した人気のある検索プラットフォー
ム。ヒット部分のハイライト,ファセットサーチなど豊富な機能がある。ス
ケーラブルで分散した検索やインデクスレプリケーションも可能
- 11. Web Script
‣ Alfresco Solr PluginへAlfrescoの情報を渡す
→ webapps/alfresco/WEB-INF/classes/alfresco/templates/
webscripts/org/alfresco/repository/solr/に設定ファイル群が存在
aclChangeSets,acls,aclsReaders
model,modelsdiff
nodeContent,nodes,nodesMetaData
transactions
- 12. Javaクラスの指定
‣ 各Web Scriptで利用するJavaクラスの指定
→ webapps/alfresco/WEB-INF/classes/alfresco/web-scripts-
application-context.xml
L.1431辺り
<!-- -->
<!-- SOLR -->
<!-- -->
<!-- -->
<bean id="solrSerializer" class="org.alfresco.repo.web.scripts.solr.SOLRSerializer" init-method="init">
<property name="dictionaryService" ref="dictionaryService"/>
<property name="namespaceService" ref="namespaceService"/>
</bean>
<bean id="webscript.org.alfresco.repository.solr.aclChangeSets.get"
class="org.alfresco.repo.web.scripts.solr.AclChangeSetsGet"
parent="webscript">
<property name="solrTrackingComponent" ref="solrTrackingComponent"/>
</bean>
(後略)
- 13. aclChangeSets
‣ 利用ファイル群
→ aclChangeSets.get.desc.xml(Web Script description)
→ aclChangeSets.get.json.ftl(FreeMarker Template)
→ org.alfresco.repo.web.scripts.solr.AclChangeSetsGet(Java)
‣ 目的
→ 特定時間以後のACL変更(List<AclChangeSet>)を取得する
‣ 引数
→ fromId,fromTime,maxResults(desc.xml)
→ toId,toTime(隠しパラメータ)
- 14. aclChangeSets(Call Tree)
‣ L.63 AclChangeSetsGet#executeImpl
→ L.157 SOLRTrackingComponentImpl#getAclChangeSets
→ L.88 SOLRDAOImpl#getAclChangeSets
この後,iBatis経由でDBから値を取得
‣ solr-common-SqlMap.xml
→ select_ChangeSets_Summary
返り値がAclChangeSetに格納される
- 15. acls
‣ 利用ファイル群
→ acls.post.desc.xml(Web Script description)
→ acls.post.json.ftl(FreeMarker Template)
→ org.alfresco.repo.web.scripts.solr.AclsGet(Java)
‣ 目的
→ 与えられたACL変更に対応するACLを取得する
‣ 引数
→ fromId,maxResults(desc.xml)
- 16. acls(Call Tree)
‣ L.60 AclsGet#executeImpl
→ L.113 #buildModel
→ L.171 SOLRTrackingComponentImpl#getAcls
→ L.115 SOLRDAOImpl#getAcls
この後、iBatis経由でDBから値を取得
‣ solr-common-SqlMap.xml
→ select_AclsByChangeSetIds
返り値がAclに格納される
- 17. aclsReaders
‣ 利用ファイル群
→ aclsReaders.post.desc.xml(Web Script description)
→ aclsReaders.post.json.ftl(FreeMarker Template)
→ org.alfresco.repo.web.scripts.solr.AclsReadersGet(Java)
‣ 目的
→ 与えられたACLのreaderを取得する
‣ 引数
- 18. aclsReaders(Call Tree)
‣ L.60 AclsReadersGet#executeImpl
→ L.107 #buildModel
→ L.199 SOLRTrackingComponentImpl#getAclsReaders
→ L.1066 AclDAOImpl#getAccessControlList
→ #getAccessControlListImpl
return AccessControlList
- 19. model
‣ 利用ファイル群
→ model.get.desc.xml(Web Script description)
→ org.alfresco.repo.web.scripts.solr.AlfrescoModelGet(Java)
‣ 目的
→ 与えられた名称のモデルを取得する
‣ 引数
→ modelQName(隠しパラメータ)
- 20. model(Call Tree)
‣ L.46 AlfrescoModelGet#execute
→ L.70 #handle
→ L.746 SOLRTrackingComponentImpl#getModel
→ L.75 DictionaryComponent#getModel
→ L.871 DictionaryDAOImpl#getModel
→ #getCompiledModel
return CompiledModel
- 21. modelsdiff
‣ 利用ファイル群
→ modelsdiff.post.desc.xml(Web Script description)
→ modelsdiff.post.json.ftl(FreeMarker Template)
→ org.alfresco.repo.web.scripts.solr.AlfrescoModelsDiff(Java)
‣ 目的
→ 与えられたモデルの差分を取得する
‣ 引数
→ models(JSONArray,隠しパラメータ)
- 22. modelsdiff(Call Tree)
‣ L.42 AlfrescoModelsDiff#executeImpl
→ L.77 #buildModel
→ L.768 SOLRTrackingComponentImpl#getModelDiffs
→ L.67 DictionaryComponent#getAllModels
→ L.791 DictionaryDAOImpl#getModels
→ #getCompiledModels
- 23. nodeContent
‣ 利用ファイル群
→ nodeContent.get.desc.xml(Web Script description)
→ org.alfresco.repo.web.scripts.solr.NodeContentGet(Java)
‣ 目的
→ 与えられたノード属性の値をテキストで取得する
‣ 引数
→ nodeId,propertyQName(desc.xml)
- 25. nodes
‣ 利用ファイル群
→ nodes.post.desc.xml(Web Script description)
→ nodes.post.json.ftl(FreeMarker Template)
→ org.alfresco.repo.web.scripts.solr.NodesGet(Java)
‣ 目的
→ トランザクション内で更新/削除されたノードを取得する
‣ 引数
→ txnIds,fromTxnId,toTxnId,fromNodeId,toNodeId
→ excludeAspects,includeAspectsなど(全て隠しパラメータ)
- 26. nodes(Call Tree)
‣ L.183 NodesGet#executeImpl
→ L.296 SOLRTrackingComponentImpl#getNodes
→ L.149/L.155 SOLRDAOImpl#getNodes
この後、iBatis経由でDBから値を取得
‣ solr-common-SqlMap.xml
→ select_Txn_Nodes
返り値がNodeに格納される
- 27. nodesMetaData
‣ 利用ファイル群
→ nodesMetaData.post.desc.xml(Web Script description)
→ nodesMetaData.post.json.ftl(FreeMarker Template)
→ org.alfresco.repo.web.scripts.solr.NodesMetaDataGet(Java)
‣ 目的
→ 与えられたノードのメタデータを取得する
‣ 引数
→ nodeIds,fromNodeId,toNodeId,maxResults
→ includeAclId,includeAspectsなど(全て隠しパラメータ)
- 28. nodesMetaData(Call Tree)
‣ L.181 NodesMetaDataGet#executeImpl
→ L.735 SOLRTrackingComponentImpl#getNodesMetadata
→ NodeMetaDataQueryRowHandler#processResult
callbackを使って最終的にMetaDataを取得
- 29. transactions
‣ 利用ファイル群
→ transactions.get.desc.xml(Web Script description)
→ transactions.get.json.ftl(FreeMarker Template)
→ org.alfresco.repo.web.scripts.solr.TransactionsGet(Java)
‣ 目的
→ 与えられた時間に含まれるトランザクションを取得する
‣ 引数
→ fromTxnId,fromCommitTime,maxResults(desc.xml)
→ minTxnId,maxTxnId,toCommitTime(隠しパラメータ)
- 30. transactions(Call Tree)
‣ L.68 TransactionsGet#executeImpl
→ L.280 SOLRTrackingComponentImpl#getTransactions
→ L.136 SOLRDAOImpl#getTransactions
この後、iBatis経由でDBから値を取得
‣ solr-common-SqlMap.xml
→ select_Txns
return Transaction
- 32. 参考
‣ ソースコード関連
→ https://wiki.alfresco.com/wiki/
Alfresco_SVN_Development_Environment
→ http://wiki.alfresco.com/wiki/Source_Code