ServiceNowでナレッジベースを作成してみた

# ナレッジベースの作成

ServiceNowにはユーザ間でコンテンツを保存、共有、および管理するためのセルフサービスプラットフォームが用意されているとのことで、早速設定してみた。
新製品HandHeld Holographicsの情報を、サービスデスクのメンバーもしくはHHD社の従業員に共有するためのナレッジベースを用意するというシナリオで構築してみる。

右上の歯車からSystem Settingを開き、ApplicationがGlobalであることと"Show application picker in header"が有効であることを確認する。
![aa.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/567289/63754f77-627b-0204-978f-1871dae7dc1e.png)

その後、[Knowledge]->[Administrarion]->[Knowledge Bases]を選択し、[New]ボタンを押します。
![ab.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/567289/fc025b06-9a24-e5f0-d399-492ab5547120.png)

オーナーや管理者の設定と併せて、パブリッシュとリトライのワークフローを指定する必要があります。ワークフローについては一旦はデフォルトに設定されたもの(ベースライン)を利用するようにしております。ここではPublish Workflowを"Knowledge - Approval Publish"にしておりますが、この後変更します。
![ac.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/567289/5b426470-2663-1528-7572-58b89aec0819.png)

設定が完了したら、下部の"Can Read"タブで、Admin、グループがService Desk、会社がHHDという3種類のユーザ基準を作成します。
![ad.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/567289/c9ae6202-d4cb-7de4-555c-303c0930ecd8.png)
![af.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/567289/4c5c9732-4cd0-9b52-8d04-6994ab2aebd1.png)
![ag.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/567289/39f7a54b-8fbc-ef51-663e-d495d59f2897.png)

最終的に"Can Read"タブは以下のような設定になります。
![ah.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/567289/fbcf0bb3-0b84-8824-7c1a-009a50cbab02.png)

ナレッジのカテゴリーも指定することが可能です。下部の"Knowledge Categories"タブで設定が可能です。
![dd.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/567289/7cd94f3f-a7d2-45cd-438c-c51185ccfb6e.png)

早速記事を1つ作ってみましょう。下部の"Knowledge"タブで[New]ボタンを押し、必要な情報を追加します。"Valid to"で記事の有効期間を指定することが可能です。
![ddd.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/567289/da481783-b0c8-07da-72f6-ec2d144bdd85.png)

Categoryについてもともと作成していたものの配下に新たなカテゴリーを作成することも可能です。
![ai.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/567289/5307c138-c933-5569-0c45-ad0da6fd328c.png)

# 公開用ワークフローの作成

先ほど指定したワークフローをカスタマイズします。ワークフローエディターというツールを利用します。

新製品HandHeld Holographicsの情報について、公開される記事のカテゴリーに基づいて、"Valid to"に投入する記事の有効期間を変更するというワークフローを作成し、先ほど作成したナレッジベースに反映させることを考えます。具体的には…
・Policyカテゴリーの記事は1年間(365日)有効
・Supportカテゴリーの記事は半年間(182日)有効
・それ以外のカテゴリーの記事は半年間(182日)有効
という風にします。

adminの状態で[Workflow]->[Workflow Editer]を選択し、設定されているワークフローの一覧を表示します。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/567289/635fe77f-c6e1-0edb-0889-c7d972e34283.png)

デフォルトで設定した"Knowledge - Approval Publish"を選択し、早速コピーをしましょう。名前も"Knowledge - HHD Approval Publish"に変更します。
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/567289/ee25f0bc-5940-29d1-54d6-8c2d8cf6835c.png)

今回のワークフローで変更すべき点は、Approval UserがReviewし、Workflowとして公開すまでの間になります。そこでCategoryフィールドを確認して、それぞれの条件にswitchさせる設定が必要です。まずはSwitchアクティビティを実装します。
![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/567289/4eede0d8-8a95-6798-07ff-b8fb98bffdd1.png)

Switchアクティビティの詳細設定を投入します。
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/567289/0f3caf6f-5f06-8311-7413-637313236731.png)

そして各条件ごとに右クリックの"Link to..."設定を行うようにします。
![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/567289/51bea24c-ab38-e0a5-bf9f-005cac2bcba4.png)

Switchはあくまでも条件を記載するのみで、実際に処理(今回は"Valid to"フィールドを)

調べるとServiceNowが標準的に搭載しているAPIであるGlideSystemで、DaysAgo()という日付指定をするのに便利なAPIがある。
https://developer.servicenow.com/app.do#!/api_doc?v=madrid&id=r_GS-daysAgo_N

Link to..で追加したもののConditionの設定は以下の通り。

```
[Policy]
current.kb_category.getDisplayValue()=="Policy"
[Support]
current.kb_category.getDisplayValue()=="Support"
[All other Category]
current.kb_category.getDisplayValue()!="Policy" && current.kb_category.getDisplayValue()!="Support"
```

同様にSet Valueアクティビティを2種類作成し、Valuesに以下の設定を投入します。

```
[Set Valid to 1 year from Publication]
Set Value   日付の代わりにjavascript:gs.DaysAgo(-365)
[Set Valid to 6 months from Publication]
Set Value   日付の代わりにjavascript:gs.DaysAgo(-182)
```
各分岐をそれぞれつないで、以下のように作成したら、画面右上のValidateを起動します。
![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/567289/2a833659-b9a5-5232-9ba9-a87878d45cb7.png)

エラーが発生しないことを確認します。
![7.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/567289/8e4ab0c0-36c5-0c98-e7ae-6c6f4f7cd7e5.png)

これで準備完了です。必ずpublishすることを忘れないようにしましょう。
![8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/567289/d5abb084-a085-03c4-4444-76f329b26fc7.png)

そして最後に、[Knowledge]->[Administrarion]->[Knowledge Bases]で設定したナレッジベースの設定を編集し、Publish Workflowを"Knowledge - HDD Approval Publish"に変更しましょう。
![9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/567289/c3943dda-ea3e-aa8d-7b40-160fc29b34f0.png)