ナレッジって特別ですよね 3回目~個別開発時におけるナレッジの独自性~


ナレッジってちょっと特別ですよね

皆さんこんにち

今回のブログはナレッジを使用して個別開発をした場合の注意点について書きたいと思います。

標準と同じように個別開発でも他のオブジェクトと同じような感覚でいると想定外のもとになりますので十分ご注意を!

それでは、Let's Knowledge!

ナレッジに関連するオブジェクトについて
まずはナレッジに関するオブジェクトについて説明したいと思います。

例:記事タイプFAQを作成した場合

オブジェクト名 説明
FAQ_DataCategorySelection 記事タイプに設定したデータカテゴリーを保持します。
FAQ_ka 記事タイプの最新のバージョンを保持しています。
FAQ_kav 記事タイプの全てのバージョン及び、カスタム項目含めた情報を保持しています。
FAQ_Feed 記事タイプのFeedを保持しています。
FAQ_ViewStat 記事タイプの参照回数を保持しています。
FAQ_VoteStat 記事タイプの評価を保持しています。
KnowledgeArticle 全ての記事タイプの最新のバージョンの記事情報を保持しています。KnowledgeArticleVersionに依存しない共通の項目のみ参照可能。
KnowledgeArticleVersion 全ての記事タイプのバージョンの記事情報を保持しています。記事タイプ共通の項目のみ参照可能。

注意点として

kavのオブジェクトでないとカスタム項目の取得はできないこと、評価や、参照回数は別のオブジェクトになるという点です。

ナレッジの検索について

ナレッジのデータを検索する場合の注意点は下記になります。

KnowledgeAirticleVersionを検索する場合(記事タイプ指定の場合も同様)

IDを条件に使用しない場合、PublishStatus及びLanguageを必ず指定する必要があります。

(例:PublishStatus = 'Draft' and Language = 'ja')

また、記事の参照回数、評価等は別オブジェクトにデータを保持しているため、

記事の結果一覧に評価の高い順や参照回数の多い順に表示する等は一工夫必要になります。


ナレッジの作成について

ナレッジのデータ作成は他のオブジェクト同様「insert」で作成することができます。

注意点としては公開状態でレコードを作成することはできず、ドラフト状態で作成した後公開にする必要があります。

記事の公開をApexコード内で行うには「KbManagement.PublishingService」クラスを使用します。

例:KbManagement.PublishingService.publishArticle(記事のId, true or false);

記事公開時に記事のバージョンを上げる場合は、true、バージョンそのままで公開する場合はfalseをセットします。

ナレッジの更新について

ナレッジのデータ更新は他のオブジェクト同様「update」で更新することができます。

ただし、注意点としては公開状態の記事を更新することはできません。

公開状態からドラフト状態に変更後、更新する必要があります。

公開状態からドラフト状態に戻す方法はまたまたKbManagement.PublishingService」クラスを使用します。

例:KbManagement.PublishingService.editOnlineArticle(記事のId, true or false);

記事更新時に公開済みの記事を削除する場合はtrue、記事を公開したままドラフトの記事を作成する場合はfalseをセットします。

ナレッジの削除について

ナレッジのデータ削除についてはいくつか方法があります。

注意点としては公開状態でレコードを削除することはできません。

ドラフトもしくはアーカイブに変更後にKbManagement.PublishingService」クラスの下記のメソッドを使用し削除します。

ドラフトの記事を削除する場合

・deleteDraftArticle(記事Id)

アーカイブした記事を削除する場合

・deleteArchivedArticle(記事Id)

アーカイブ状態の記事の指定したバージョンの記事を削除する場合

・deleteArchivedArticleVersion(記事Id, バージョンNO)

記事タイプ指定の場合

・FAQ_kaオブジェクトのIdを指定し「delete」で削除します。

簡単ではありますが、検索から削除までナレッジ独自の仕組みを説明しましたが、

個別開発でナレッジを使用する場合には下記の点に注意が必要です。

考慮すべき点

・オブジェクトの関係性を理解すべき

KbManagement.PublishingServiceでできること

・公開とドラフト状態について理解すべき

おわりに

もうすぐSpring16のリリースですね。

ナレッジもいくつか変更点があります。

Spring16におけるナレッジの変更点

・入力規則の追加
・ページレイアウトの設定が他のオブジェクトと同じように設定可能
・ナレッジを有効化した時にデフォルトで記事タイプが追加される
・Force.com および Chatter Plus ユーザへのナレッジへの参照アクセス権の付与

細かい修正だと思いますが、少しずつナレッジが特別な部分が減っていると思います。
将来的にはナレッジが独自の制限ができるだけ少なくなったらいいなと思っています。

まとめ

今回のブログではナレッジを使用した個別開発について書きました。
標準オブジェクトやカスタムオブジェクトを使用した開発と比較しちょっとクセがあり、
ナレッジ独自の仕様や制限を理解して開発することが大事だと思います。

次回はナレッジのデータ移行の勘所について書きたいと思います。