Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Alfresco勉強会#28 メタデータテンプレート

5,258 views

Published on

第28回Alfresco勉強会で発表した内容です。Alfresco Shareのドキュメントリストに表示される属性情報をカスタマイズする方法(メタデータテンプレートの使い方)についてご紹介しました。

Published in: Software
  • Sex in your area is here: ♥♥♥ http://bit.ly/2F4cEJi ♥♥♥
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Dating for everyone is here: ❶❶❶ http://bit.ly/2F4cEJi ❶❶❶
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • If you want to download or read this book, Copy link or url below in the New tab ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Doc Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • If you want to download or read this book, Copy link or url below in the New tab ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Doc Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • (Unlimited)....ACCESS WEBSITE Over for All Ebooks ................ accessibility Books Library allowing access to top content, including thousands of title from favorite author, plus the ability to read or download a huge selection of books for your pc or smartphone within minutes ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { https://urlzs.com/UABbn } ......................................................................................................................... Download Full EPUB Ebook here { https://urlzs.com/UABbn } ......................................................................................................................... Download Full PDF EBOOK here { https://urlzs.com/UABbn }
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

Alfresco勉強会#28 メタデータテンプレート

  1. 1. 2015© 2015年6月24日 Jun Terashita 第28回 Alfresco勉強会 メタデータテンプレート
  2. 2. 2015©2 自己紹介 •主にAlfrescoの導入支援コンサルティングやカスタマイズ開発をしています。 •緑陣営です。弊社にはガチ勢が数人いますが私はまったりやってます。
  3. 3. 2015©3 発表内容 1. メタデータテンプレートとは 2. カスタムメタデータテンプレートを作ってみよう 3. デフォルトのテンプレートの上書き
  4. 4. 1. メタデータテンプレートとは
  5. 5. 2015©5 メタデータテンプレートとは • Alfresco Shareのドキュメントリストでシンプル表示モードと詳細表示モードに表示する属 性情報(メタデータ)をカスタマイズするための仕組み • コンテンツのタイプや保持するアスペクト、属性等、条件を評価して表示する属性情報を切 り替えることが可能 • シンプル表示のみ、詳細表示のみ、両方に表示、という指定も可能 この部分
  6. 6. 2015©6 デフォルトのメタデータテンプレート ... <metadata-templates> <!-- Default (fallback) --> <template id="default"> <banner index="10" id="lockBanner" evaluator="evaluator.doclib.metadata.hasLockBanner">{lockBanner}</banner> <banner index="20" id="syncTransientError" evaluator="evaluator.doclib.metadata.hasSyncTransientErrorBanner">{syncTransientError}</banner> <banner index="30" id="syncFailed" evaluator="evaluator.doclib.metadata.hasSyncFailedBanner">{syncFailed}</banner> <line index="10" id="date">{date}{size}</line> <line index="20" id="description" view="detailed">{description}</line> <line index="30" id="tags" view="detailed">{tags}</line> <line index="40" id="categories" view="detailed" evaluator="evaluator.doclib.metadata.hasCategories">{categories}</line> <line index="50" id="social" view="detailed">{social}</line> </template> ... • エンドユーザが目にするのはdefaultとisWorkingCopy • WorkingCopy(オフライン編集中のファイル)にはtags, categories, socialの行を表示しない webapps/share/WEB-INF/classes/alfresco/share-documentlibrary-config.xml isWorkingCopyにはこの部分がない
  7. 7. 2015©7 メタデータテンプレートの構成要素 要素 用途 evaluator テンプレートの使用条件(複数指定可能) banner コンテンツ名の上に表示されるバナー line コンテンツ名の下に表示される1行ずつの表示エリア banner line
  8. 8. 2015©8 banner, lineの属性 要素 用途 index 表示順序指定(小さい順に表示される) id バナー/ラインの名前(ID) ※テンプレート内で一意である必要がある view simpleまたはdetailedを指定 ※何も指定しない場合は両方に表示される evaluator 指定したEvaluatorが真を返す場合のみ表示する
  9. 9. 2015©9 banner, lineの表示内容設定 • 2通りの指定が可能 (A)クライアントサイドJavaScript(※)で事前定義されたレンダラを指定:{レンダラ名}
   ※webapps/share/components/documentlibrary/documentlist.js (B)プロパティ名とラベルのリソースキーを指定:{プロパティ名 ラベルのリソースキー}
   (プロパティ名は「 : 」を「 _ 」に置換して指定) ... <template id="transferTarget"> <evaluator>evaluator.doclib.metadata.isTransferTarget</evaluator> <banner index="10" id="lockBanner" evaluator="evaluator.doclib.metadata.hasLockBanner">{lockBanner} </banner> <banner index="20" id="syncTransientError" evaluator="evaluator.doclib.metadata.hasSyncTransientErrorBanner">{syncTransientError}</banner> <banner index="30" id="syncFailed" evaluator="evaluator.doclib.metadata.hasSyncFailedBanner">{syncFailed}</banner> <line index="10" id="date">{date}</line> <line index="20" id="description" view="detailed">{description}</line> <line index="30" id="transferTarget" simpleView="true">{trx_enabled label.trx_enabled} {trx_endpointhost label.trx_endpointhost}{trx_endpointport label.trx_endpointport}</line> </template> ... (B)の例 (A)の例 webapps/share/WEB-INF/classes/alfresco/share-documentlibrary-config.xml
  10. 10. 2. カスタムメタデータテンプレートを作ってみよう
  11. 11. 2015©11 今回作ってみるサンプル • EXIFアスペクトが付いているコンテンツの詳細表示に「画像幅」「画像高」「露光時間」「F 値」を追加し、「説明」は表示しない • シンプル表示には「画像幅」「画像高」のみ表示する こんなかんじに変える
  12. 12. 2015©12 今回使用した環境 • 標準のShareと比較しながら開発できるためメモリに余裕があるなら以下の構成がおすすめ • リポジトリ • Alfresco Community Edition 5.0.dをCentOS 7(VirtualBoxのVM)にインストーラ でインストール • カスタマイズするShare • Alfresco SDK 2.1.0の「share-amp-archetype」を使用してEclipseで開発 • Alfrescoのバージョンはデフォルトのまま(今回は5.0.dが設定されている) • Alfresco SDKについては以前のAlfresco勉強会の資料を参照
 http://www.slideshare.net/terajun/alfresco26-alfresco-sdk
  13. 13. 2015©13 作成するファイル • 今回は以下の5つのファイルを作成します • 属性のラベルにOut-of-the-Boxのメッセージリソースが使用可能な場合は下の2行は不要 ファイル 用途 share-config-custom.xml カスタムメタデータテンプレートを定義 custom-slingshot-documentlibrary- context.xml カスタムのEvaluatorを定義 custom-slingshot-application- context.xml 属性のラベルに使用するメッセージリソ ースファイルの読み込み設定 custom_label.properties custom_label_ja.properties メッセージリソースファイル
  14. 14. 2015©14 作成するファイルのパス • Alfresco SDKを使用してカスタマイズする場合はそれぞれ以下のパスに配置 • share-config-custom.xml以外はファイル名はなんでもよい(拡張子さえ合っていれば)
  15. 15. 2015©15 カスタムメタデータテンプレートの定義 • EXIFアスペクトが付いていれば真を返すEvaluator(後述)で評価し、画像幅、画像高、露 光時間、F値を表示するテンプレートを定義 <alfresco-config> <config evaluator="string-compare" condition="DocumentLibrary"> <metadata-templates> <!-- Photos --> <template id="isPhoto"> <evaluator>evaluator.doclib.metadata.hasExif</evaluator> <line index="10" id="date">{date}{size}</line> <line index="20" id="exif_pixelDimension">{exif_pixelXDimension label.exif_pixelXDimension} {exif_pixelYDimension label.exif_pixelYDimension} </line> <line index="30" id="exif_exposureTime" view="detailed">{exif_exposureTime label.exif_exposureTime} </line> <line index="40" id="exif_fNumber" view="detailed">{exif_fNumber label.exif_fNumber} </line> <line index="50" id="tags" view="detailed">{tags}</line> <line index="60" id="categories" view="detailed" evaluator="evaluator.doclib.metadata.hasCategories">{categories}</line> <line index="70" id="social" view="detailed">{social}</line> </template> </metadata-templates> </config> </alfresco-config> EXIF情報表示用のライン 新たに定義したEvaluator(後述) shared/classes/alfresco/web-extension/share-config-custom.xml または META-INF/share-config-custom.xml(JARに入れる場合)
  16. 16. 2015©16 カスタムのEvaluatorの定義 • EXIFアスペクトが付いているかどうか評価するEvaluatorを定義 <beans> <bean id="evaluator.doclib.metadata.hasExif" class="org.alfresco.web.evaluator.HasAspectEvaluator"> <property name="aspects"> <list> <value>exif:exif</value> </list> </property> </bean> </beans> shared/classes/alfresco/web-extension/custom-slingshot-documentlibrary-context.xml
  17. 17. 2015©17 ラベル表示用のメッセージリソースの作成 • メッセージリソースファイルの読み込み設定とメッセージリソースファイルを作成 • 日本語のみ必要な場合はメッセージリソースファイルを分ける必要はない ... <bean id="webscripts.custom.resources" class="org.springframework.extensions.surf.util.ResourceBundleBootstrapComponent"> <property name="resourceBundles"> <list> <value>alfresco.messages.custom_label</value> </list> </property> </bean> ... label.exif_pixelXDimension=Image Width label.exif_pixelYDimension=Image Height label.exif_exposureTime=Exposure Time label.exif_fNumber=F Number shared/classes/alfresco/web-extension/custom-slingshot-application-context.xml label.exif_pixelXDimension=u753bu50cfu5e45 label.exif_pixelYDimension=u753bu50cfu9ad8 label.exif_exposureTime=u9732u5149u6642u9593 label.exif_fNumber=Fu5024 shared/classes/alfresco/messages/custom_label.properties shared/classes/alfresco/messages/custom_label_ja.properties
  18. 18. 2015©18 カスタマイズを適用して動作確認
  19. 19. 3. デフォルトのテンプレートの上書き
  20. 20. 基本的にはここまでのカスタマイズでOK
  21. 21. でもオフライン編集すると isWorkingCopyのテンプレートが 効いてしまう
  22. 22. 2015©22 EXIFアスペクトをもつファイルをオフライン編集すると EXIF情報は表示されない ... <!-- Working Copies --> <template id="isWorkingCopy"> <evaluator>evaluator.doclib.metadata.isWorkingCopy</evaluator> <banner index="10" id="lockBanner" evaluator="evaluator.doclib.metadata.hasLockBanner">{lockBanner}</banner> <banner index="20" id="syncTransientError" evaluator="evaluator.doclib.metadata.hasSyncTransientErrorBanner">{syncTransientError}</banner> <banner index="30" id="syncFailed" evaluator="evaluator.doclib.metadata.hasSyncFailedBanner">{syncFailed}</banner> <line index="10" id="date">{date}{size}</line> <line index="20" id="description" view="detailed">{description}</line> </template> ... webapps/share/WEB-INF/classes/alfresco/share-documentlibrary-config.xml このEvaluatorが先に評価される
  23. 23. WorkingCopyの表示内容も変えたい場合は?
  24. 24. 2015©24 まずはコンテンツの状態でどのように表示内容を変えるか整理 EXIFアスペクトあり EXIFアスペクトなし WorkingCopy ではない さっき作った内容 defaultと同じ内容 WorkingCopy 上の内容からtags, categories, socialを削除 isWorkingCopy と同じ内容 • EXIFアスペクトの有無とWorkingCopyかどうかで表示内容をどのように変えるか整理
  25. 25. 2015©25 上書きする方法は2通り (1)メタデータテンプレートの設定をすべて上書きし、メタデータテンプレートのEvaluator が評価される順番を書き換える (2)isWorkingCopyのメタデータテンプレートを上書きし、個々の場合の条件を細かく設定 する
  26. 26. (1)メタデータテンプレート全体の上書き
  27. 27. 2015©27 DocumentLibraryの設定全体を上書き ... <!-- Document Library config section --> <config evaluator="string-compare" condition="DocumentLibrary" replace="true"> <!-- Document List --> <doclist> ... <!-- Custom Metadata Templates for the Document Library Browse View Use view="simple" or view="detailed" to limit the display to one particular view. --> <metadata-templates> <!-- Default (fallback) --> <template id=“default"> ... </config> • share-documentlibrary-config.xmlからcondition= DocumentLibrary の設定をshare- config-custom.xmlにすべてコピーし、replace= true というパラメータを設定
 ※設定を書き換えない部分も含めてすべてコピーしないとエラーになってしまうので注意 shared/classes/alfresco/web-extension/share-config-custom.xml または META-INF/share-config-custom.xml(JARに入れる場合)
  28. 28. 2015©28 メタデータテンプレートを定義する順番 EXIFアスペクトあり EXIFアスペクトなし WorkingCopy ではない さっき作った内容 defaultと同じ内容 WorkingCopy 上の内容からtags, categories, socialを削除 isWorkingCopy と同じ内容 • 以下の順にメタデータテンプレートが評価されてほしい
 (②と③はどちらが先でもよい) ① ② ③ ④
  29. 29. 2015©29 メタデータテンプレートの定義の順番を書き換え ... <metadata-templates> <!-- Default (fallback) --> <template id="default"> <banner index="10" id="lockBanner" evaluator=“evaluator.doclib.metadata.hasLockBanner">{lockBanner}</banner> ... </template> <!-- EXIFアスペクトありのWorkingCopy --> <template id="isWorkingCopyWithExif"> <evaluator>evaluator.doclib.metadata.hasExif</evaluator> <evaluator>evaluator.doclib.metadata.isWorkingCopy</evaluator> <banner index="10" id="lockBanner" evaluator=“evaluator.doclib.metadata.hasLockBanner">{lockBanner}</banner> ... </template> <!-- EXIFアスペクトあり --> <template id="hasExif"> <evaluator>evaluator.doclib.metadata.hasExif</evaluator> <line index="10" id=“date">{date}{size}</line> ... </template> <!-- Working Copies --> <template id="isWorkingCopy"> ... • defaultとisWorkingCopyの間に前ページの①と②のメタデータテンプレートを挿入
 (②はisWorkingCopyの後でもよい) shared/classes/alfresco/web-extension/share-config-custom.xml または META-INF/share-config-custom.xml(JARに入れる場合) ①にはEvaluatorを2つ指定
  30. 30. 2015©30 カスタマイズを適用して動作確認
  31. 31. (2)isWorkingCopyのテンプレートを上書き
  32. 32. 2015©32 否定形のEvaluatorを定義 ... <bean id=“evaluator.doclib.metadata.doesNotHaveExif" class="org.alfresco.web.evaluator.HasAspectEvaluator"> <property name="aspects"> <list> <value>exif:exif</value> </list> </property> <property name="negateOutput" value="true" /> </bean> <bean id="evaluator.doclib.metadata.isNotWorkingCopy" parent="evaluator.doclib.metadata.value"> <property name="accessor" value="workingCopy.isWorkingCopy" /> <property name="comparator"> <bean class="org.alfresco.web.evaluator.StringEqualsComparator"> <property name="value" value="true" /> </bean> </property> <property name="negateOutput" value="true" /> </bean> ... shared/classes/alfresco/web-extension/custom-slingshot-documentlibrary-context.xml • negateOutputというプロパティを使用して、EXIFアスペクトが付いていない時に真を返す EvaluatorとWorkingCopyではない時に真を返すEvaluatorを定義
  33. 33. 2015©33 場合分けに対応するEvaluatorを定義(必須ではない) ... <bean id="evaluator.doclib.metadata.isWorkingCopyWithoutExif" class="org.alfresco.web.evaluator.ChainedMatchAllEvaluator"> <property name="evaluators"> <list> <ref bean="evaluator.doclib.metadata.isWorkingCopy" /> <ref bean="evaluator.doclib.metadata.doesNotHaveExif" /> </list> </property> </bean> <bean id="evaluator.doclib.metadata.isWorkingCopyWithExif" class="org.alfresco.web.evaluator.ChainedMatchAllEvaluator"> <property name="evaluators"> <list> <ref bean="evaluator.doclib.metadata.isWorkingCopy" /> <ref bean="evaluator.doclib.metadata.hasExif" /> </list> </property> </bean> <bean id="evaluator.doclib.metadata.isNotWorkingCopyWithExif" class="org.alfresco.web.evaluator.ChainedMatchAllEvaluator"> <property name="evaluators"> <list> <ref bean="evaluator.doclib.metadata.isNotWorkingCopy" /> <ref bean="evaluator.doclib.metadata.hasExif" /> </list> </property> </bean> ... shared/classes/alfresco/web-extension/custom-slingshot-documentlibrary-context.xml • ChainedMatchAllEvaluatorを使用し、ここまでに定義したEvaluatorの組み合わせで場合分 けに対応する新たなEvaluatorを定義 • これは必須ではなく、先ほどの例のようにメタデータテンプレート側でEvaluatorの組み合わ せを設定してもよい
  34. 34. 2015©34 デフォルトのisWorkingCopyテンプレートを無効化 ... <!-- isWorkingCopyテンプレートを無効化 --> <template id="isWorkingCopy"> <evaluator>evaluator.doclib.action.disableAction</evaluator> </template> ... • デフォルトのisWorkingCopyテンプレートを上書きし、常に偽を返すEvaluatorを使用して無 効化
 ※無効化せずに場合分けの1つとして内容を書き換えてもよい shared/classes/alfresco/web-extension/share-config-custom.xml または META-INF/share-config-custom.xml(JARに入れる場合) • slingshot-documentlibrary-context.xmlに定義されている • org.alfresco.web.evaluator.AlwaysFalseEvaluatorというクラスを使用している
  35. 35. 2015©35 各Evaluatorに対応したメタデータテンプレートを定義 ... <!-- EXIFアスペクトあり --> <template id="isNotWorkingCopyWithExif"> <evaluator>evaluator.doclib.metadata.isNotWorkingCopyWithExif</evaluator> <line index="10" id="date">{date}{size}</line> <line index="20" id="exif_pixelDimension">{exif_pixelXDimension label.exif_pixelXDimension} {exif_pixelYDimension label.exif_pixelYDimension} </line> <line index="30" id="exif_exposureTime" view="detailed">{exif_exposureTime label.exif_exposureTime}</line> <line index="40" id="exif_fNumber" view="detailed">{exif_fNumber label.exif_fNumber}</line> <line index="50" id="tags" view="detailed">{tags}</line> <line index="60" id="categories" view="detailed" evaluator="evaluator.doclib.metadata.hasCategories">{categories}</line> <line index="70" id="social" view="detailed">{social}</line> </template> <!-- EXIFアスペクトありのWorkingCopy --> <template id="isWorkingCopyWithExif"> <evaluator>evaluator.doclib.metadata.isWorkingCopyWithExif</evaluator> <banner index="10" id=“lockBanner" evaluator=“evaluator.doclib.metadata.hasLockBanner”>{lockBanner}</banner> ... • デフォルトのisWorkingCopyテンプレートを上書きし、常に偽を返すEvaluatorを使用して無 効化 shared/classes/alfresco/web-extension/share-config-custom.xml または META-INF/share-config-custom.xml(JARに入れる場合)
  36. 36. 2015©36 カスタマイズを適用して動作確認
  37. 37. 以上
  38. 38. 2015©38 今回のソースはここに置いてあります https://github.com/terajun/alfresco-metadata-template-sample

×