【ServiceNow】San Diego検証「Flow Desginer  変換関数」について

MKIではServiceNowのSan Diego版にリリースされた新機能の動作検証を行っています。
今回はFlowDesginerの変換関数について検証を行ったので結果をまとめました。

## 変換関数とは
アクションなどにセットされたデータピルの値を関数を使って変換できる機能です。
San Diegoからは以下の関数が追加されました。
　✓日付と時刻
　✓簡単な計算
　✓文字列
　✓ユーティリティの変換関数

### 日付と時刻
日付/時刻または文字列のデータに対し操作を行ことができます。
関数と処理内容は以下のとおりです。
詳細は公式ドキュメント[ Date and time transform functions ](https://docs.servicenow.com/bundle/sandiego-servicenow-platform/page/administer/flow-designer/reference/date-time-transform-functions.html)を参照してください。
|関数|処理内容|
|:-----------------|:------------------|
|時間の加算|入力された日付/時刻、日付、期日に日、時間、分、秒を追加する|
|時間の減算|入力された日付/時刻、日付、期日から日、時間、分、秒を減算する|
|文字列から日付|入力された文字列を日付/時刻に変換する|
|日付から文字列|入力された日付/時刻、日付、または期日を文字列に変換する。変換時に値をカスタムの日付形式にすることもできる|
|カスタム日付形式|特定の日付と時刻のパターン文字列のシーケンスを使用して、カスタムの日付形式を指定できる|
|年|指定された日付/時刻から年コンポーネントを取得する|
|月|指定された日付/時刻から月コンポーネントを取得する|
|日|指定された日付/時刻から日コンポーネントを取得する|
|時|指定された日付/時刻から時間コンポーネントを取得する|
|分|指定された日付/時刻から分コンポーネントを取得する|
|秒|指定された日付/時刻から秒のコンポーネントを取得する|
|週|指定した日付/時刻の週番号を評価する|
|日付の比較|指定された入力日付とパラメーター日付の間の期間の差を評価し、その差の期間をエポック時間に追加する(1970-01-01 00:00:00)|
|月末|指定した日付に指定した月数を加算した後の月の最後の日を評価する|

### 簡単な計算
数値、整数、10進数のデータおよび配列データに対し操作を行います。
関数と処理内容は以下のとおりです。
詳細は公式ドキュメント[ Simple math transform functions ](https://docs.servicenow.com/bundle/sandiego-servicenow-platform/page/administer/flow-designer/reference/simple-math-transform-functions.html)を参照してください。
|関数|処理内容|
|:-----------------|:------------------|
|加算|指定された値を入力値に追加する|
|減算|入力値から指定された値を減算する|
|乗算|入力値に指定された値を乗算する|
|除算|入力値を指定された値で除算する|
|合計|入力配列内のすべての値の合計を返す|
|累乗|入力値を指定された値のべき乗にした値を返す|
|最大数|入力配列で見つかった最大値を返す|
|最小値|入力配列で見つかった最小値を返す|
|絶対値|入力値の絶対値を返す|
|平均値|入力配列内の数値の平均値を返す|
|中央値|入力配列内の要素の中央値を返す|
|カウント|入力配列内の要素の数を返す|
|丸め|入力値に四捨五入した値を返す|
|平方根|入力値の平方根の値を返す|
|小数点以下の切り捨て|入力値から指定された値の小数点以下の桁数を切り捨てる|

### 文字列
文字列のデータに対し変換または計算を行います。
関数と処理内容は以下のとおりです。
詳細は公式ドキュメント[ String transform functions ](https://docs.servicenow.com/bundle/sandiego-servicenow-platform/page/administer/flow-designer/reference/string-transform-functions.html)を参照してください。
|関数|処理内容|
|:-----------------|:------------------|
|数値への変換|文字列を数値に変換する|
|含む|入力文字列に特定の文字が含まれている場合にtrueを返す|
|含まない|入力文字列に特定の文字が含まれていない場合にtrueを返す|
|始まり|入力文字列が指定された文字で始まる場合にtrueを返す|
|終わり|入力文字列が指定された文字で終わる場合にtrueを返す|
|最初の文字|入力文字列の最初の文字を返す|
|最後の文字|入力文字列の最後の文字を返す|
|置換|指定された正規表現と置換文字列に基づいて、入力文字列を置換した文字列を返す|
|サイズ|入力文字列の合計文字数を返す|
|区切り|入力文字列を指定された区切り文字に基づいて変換して返す|
|大文字|入力文字列をすべて大文字に変換する|
|小文字|入力文字列をすべて大文字に変換する|
|適切なケース|各単語の最初の文字を大文字にし、残りの文字を単語の小文字に変換する|
|サブストリング|指定された開始インデックスと終了インデックスに該当する文字列を入力文字列から返す|
|トリム|入力文字列の先頭と末尾から空白を削除する|

### ユーティリティの変換関数
ユーティリティ変換関数を使用して、配列から複合オブジェクトを返したり、特定のキーに関連付けられた値を返します。
関数と処理内容は以下のとおりです。
詳細は公式ドキュメント[ Utilities transform functions ](https://docs.servicenow.com/bundle/sandiego-servicenow-platform/page/administer/flow-designer/reference/utilities-transform-functions.html)を参照してください。
|関数|処理内容|
|:-----------------|:------------------|
|配列から項目を取得|入力配列の指定したインデックスの項目を複合オブジェクトとして返す|
|配列から最初の項目を取得|入力配列の最初の項目を複合オブジェクトとして返す|
|配列から最後の項目を取得|入力配列の最後の項目を複合オブジェクトとして返す|
|名前/値から項目を取得|名前と値のペアのマップから、一致するキーに関連付けられている値を返す|
|空白|入力が空白の場合はtrueを返す|
|空白でない|入力が空白でないの場合はtrueを返す|
|TRUE|入力がtrueの場合にtrueを返す|
|FALSE|入力がfalseの場合にtrueを返す|
|Null|入力値がnullの場合はtrueを返す|
|キー値マップ|一致するキーに関連付けられた値を返す|
|ソート|指定された配列を昇順または降順で並べ替える|
|ユニーク|指定された配列から重複する要素を削除する|
|Join|指定された配列の要素を指定された区切り文字で連結し、連結された文字列を返す|
|サブストリング|指定された開始インデックスと終了インデックスに該当する文字列を入力文字列から返す|
|トリム|入力文字列の先頭と末尾から空白を削除する|

## 設定方法
変換関数の設定方法を説明します。
データピルの設定後、カーソルを当てると関数アイコンが表示されるのでクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2599975/c5430a75-3587-2d80-fb92-556fc943f7c1.png)


目的の変換関数を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2599975/5aef3236-f130-ef17-2b6d-4152825809c2.png)


必要な場合は値を入力し、適用をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2599975/f4f6ffe7-d9df-473b-08b5-48af37b821c2.png)

## 検証
実際に使用してみます。

インシデントを作成する際、要求アイテム番号のアルファベット部分（RITM）を小文字（ritm）に変換する処理を作成してみます。
変換した文字列は「概要説明」というフィールドにセットします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2599975/9fd537d0-6f08-f8aa-beb4-a326e8e65222.png)


申請された際の要求アイテム番号は大文字で「RITM0010067」となっていますが、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2599975/65b7619a-6eba-b802-64b3-8c0695bf13e6.png)


インシデントの「概要説明」には、要求アイテム番号のアルファベット部分が小文字に変換された値がセットされていました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2599975/9b29530c-065b-1c2b-e303-20dc0f5a2f1f.png)