NetSuiteのノーコード・ローコード開発 = SuiteFlowワークフローエンジン

これは🎄🎁🎅[Oracle NetSuite Advent Calendar 2024](https://qiita.com/advent-calendar/2024/netsuite)🤶🎁🎄の20日目の投稿です。

基幹業務の実行で必ず発生する「フィールドの自動更新」--- たとえば発注書の起草者が発注した品物のフィールドを埋めて「提出」ボタンを押す (イベントによる**トリガー**)と、「**状態 (State)**」が「ドラフト」から「提出済み」になり、「割当先」が担当者から、担当者の上司に変わり(**トランジション**)、上司にメールが送られる (**アクション**) --- このような業務フロー自動化を簡単にERPで実装したいというニーズがあるかと思います。

NetSuiteでは、業務フローをJavaScriptベースのSuiteScriptで実装することもできますが、フィールドの自動更新等の比較的シンプルな業務フローであれば、**SuiteFlowワークフローエンジン**を使ったノーコード開発で実装することが可能です。

SuiteFlowはNetSuiteにおけるレコードのカスタムビジネスプロセスの定義であり、状態、トランジション、トリガー、アクションや、それらにまつわる条件設定、イベントの設定等を行うことができます。管理者が機能を有効化することで利用可能になります。ゼロから作成することもできれば、SuiteAppから特定業務向けのテンプレート (標準SuiteFlowワークフロー) をダウンロードしてセットアップすることもできます。

# 有効化方法

SuiteFlowの有効化、カスタマイズ、利用にはそれぞれ適切なNetSuite権限が必要です。
管理者がメニューの [設定] > [会社] > [タスクを設定: 機能の有効化]を選択して設定画面を開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197689/9fb437b7-8fc0-1f88-fc9f-61b7ff5c35ae.png)

[SuiteCloud]サブタブの[SuiteFlow]チェックボックスを有効にします。そして画面の一番上 or下にある[保存]ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197689/f027108b-1b0e-e497-6eb7-ca32f91f3166.png)

SuiteFlowの機能はクライアント/サーバーSuiteScriptに機能依存しているため、これらも有効になります。

また、見積、注文書、返品、発注書、仕入先返品には、標準SuiteFlowワークフローであるSuiteApp「NetSuiteの承認ワークフロー」を使うことができます。これは、管理者がメニューの [設定] > [会社] > [タスクを設定: 機能の有効化]を選択して[トランザクション]サブタブの[基本機能]から設定のアクセスが可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197689/6986b02d-239c-a40a-c1fd-11b1bebd4db1.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197689/48b25d4c-a012-9f02-5292-1382bbc0d093.png)

# ワークフローの一覧とフローの作成、編集
SuiteFlowが有効な状態で、メニューの[カスタマイゼーション] > [ワークフロー]をクリックすると、システムに設定されているワークフローの一覧が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197689/2119d00c-194c-eb05-5dff-da4e70c8adcf.png)
ワークフロー自体は保存検索で特定の条件に合致するものだけを一覧することも可能です。

一覧のどれかをクリックすると、作成済みワークフローのダイアグラム概要、関連フィールド一覧を見ることができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197689/714da2d5-d8b6-3022-e8f5-84a1a788a8b0.png)
ダイアグラムの各要素をクリックすると、そのステップでの詳細条件を見ることができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197689/6e063549-cffb-3cd6-385d-aa096785ee9d.png)
左側のダイアグラム部分は「ワークフローダイアグラマー」と呼ばれていて、編集モードでは[+新しい処理]ボタンをクリックして状態 (四角い箱) を新しく作成して、マウスで移動したり、状態をマウスでポイントしたときに表示されるつまみをドラッグして状態間をつなぎ合わせてトランジションを作ることもできます。いずれもブラウザー上でビジュアルに編集が可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197689/0bd4e019-0030-9571-1b4f-39a124f79cd6.png)
状態を選択した状態で、その状態のアクションを編集することが可能です。アクションを新しく作成する場合は、その状態で可能なアクションの一覧から選択して、プロパティを設定していく形で定義が可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197689/10f65ad2-1711-776c-2d6d-ea49858912ae.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197689/3fcee263-7c94-07ee-ca2e-e094982ff48c.png)

# ワークフローのテスト、実行
ワークフローが組みあがったら、ワークフローの所有者はワークフローのリリース・ステータスを「テスト」にすることで、テスト実行を行うことができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197689/29c553d8-e786-55d6-4121-6a6a074cdc65.png)
テストが問題なく終了したら、「リリース済み」に変更すると、対象レコードにアクセスできるすべてのユーザーがワークフローを実行することになります。ワークフローを開始するトリガーに従って、ワークフローが適宜実行されます。

# まとめ
このように、NetSuiteではSuiteScriptを使わなくてもノーコード開発でレコードのカスタムビジネスプロセスの定義を行いビジネスプロセスを自動化することができます！