Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

SAP Ruum ではじめるノーコードなワークフロー開発

はじめに

この記事は SAP Advent Calendar 2020 の12月18日分の記事として執筆しています。

コロナ禍で多くのイベントがオンライン開催となっていますが、SAP のテクニカルカンファレンスである「SAP TechEd」もそのひとつです。参加無料で多くの最新情報に触れる絶好の機会ですので、ご興味ある方は、以下にアクセスしてみてください。

例年、セッションタイプはレクチャー(40分の講義形式)ではなく、ワークショップ(120分のハンズオン形式)を優先的に選択しています。最近では、自身の SAP Cloud Platform のトライアルアカウントを利用するハンズオンも増えてきたものの、やはりトライアルでは利用できないサービスに触れることができるワークショップは魅力的です。

今年は、「SAP Ruum」というサービスを利用したノーコードなワークフロー開発に触れる機会を得ました。ワークショップ当日から7日間のみ有効なアカウントを利用していますので、大急ぎで執筆しています。マテリアルは以下の GitHub リポジトリから入手可能です。

SAP Ruum とは?

SAP Ruum とは、SAP 社が提供するノーコードなプロセス自動化ツールです。公式ページでは以下のように紹介されています。ワークショップで作成したワークフローは、SAP Ruum が持つ多面的な特徴のひとつに過ぎないようです。

Ruum empowers your non-technical users to build, integrate, and run departmental processes, without compromising IT security.

少しだけ歴史を振り返る

2019年5月に以下の SAP News がありました。
SAP、社内コラボレーションツールのスタートアップRuumに1,000万ユーロを出資

こちらのニュースの後半に以下のように記載されています。SAP はベンチャーキャピタル、アクセラレータとしてスタートアップを支援していますが、Ruum もその活動の一環で投資先となった有望スタートアップのひとつだったようです。

Ruumは、SAP.iOビジネスユニットがリードする社内インキュベーションプログラムであるSAP.iO Venture Studioの投資先スタートアップです。

また、ワークショップ資料でも歴史が紹介されています。最初は、プロジェクトマネジメントとコラボレーションのために開発されたそうです。現在もこれらの性格が失われたわけではありませんが、マーケティングのために「ノーコード」や「オートメーション」というキーワードを強調しているように思います。
Screen Shot 2020-12-13 at 15.13.19.png

SAP Ruum が担う領域

SAP Ruum の公式ページには、大きな文字で Automate the long tail of your processes without code とあります。直訳すると「コードなしであなたのプロセスのロングテールを自動化する」となりますが、この 業務プロセスのロングテール というのが SAP Ruum のターゲットです。

標準化された業務領域には高度にインテリジェント化された標準ワークフローを適用し、中間的な領域には SAP Cloud Platform Workflow などのプラットフォームを活用した拡張開発を適用し、さらにその先のロングテールには SAP Ruum を適用する。こうしたオファリングのカバレッジの広さも SAP らしいと言えるのではないでしょうか。
Screen Shot 2020-12-13 at 15.04.10.png

ワークフローのシナリオ

ワークショップで作成したワークフローは下図の通りです。4つのフォームを持つ典型的なワークフローです。
Screen Shot 2020-12-13 at 16.13.54.png

SAP Ruum にログインする

ログイン画面

早速、SAP Ruum にログインしてみます。ワークショップ用に割り当てられたユーザでログインしました。
screenshot-open.ruumapp.com-2020.12.13-15_41_29_masked.png

ホーム画面

ログインするとホーム画面が表示されますので、プロファイルを確認してみましょう。ワークショップ用に割り当てられたユーザは、Enterprise Plan 契約でした。Enterprise Plan では、OData API アクセスやシングルサインオンがサポートされるようです。プランの詳細はこちらから確認可能です。
screenshot-open.ruumapp.com-2020.12.13-16_00_07_masked.png

Ruum テンプレートを作成する

テンプレートの作成開始

メニューペインを開き、Templates メニューを選択します。テンプレート画面が表示されたら、右上の + New ボタンを選択します。
screenshot-open.ruumapp.com-2020.12.13-16_29_20.png

Create Template ポップアップが表示されたら、必要な情報を入力し、Next ボタンを選択します。
screenshot-open.ruumapp.com-2020.12.13-16_28_59.png

テンプレートのデザイン(レイアウト編)

まっさらなテンプレートが作成されました。初期状態では、以下のようにひとつだけのセクションを持っています(Give this section a name というタイトルが表示されている背景が白いキャンバス部分)。
screenshot-open.ruumapp.com-2020.12.13-16_37_50.png
このキャンバスにワークフローのシナリオに沿ったセクションを描き、フローを定義しています。キャンバスをクリックすると、Type of Insert というプロンプトが表示されて、入力待ち状態となります。Type の部分にテキストを入力すると、それがそのまま反映されます。以下では、"Please full in ..." を入力しました。
screenshot-open.ruumapp.com-2020.12.13-16_59_58.png
Insert はボタンになっており、クリックすると以下の選択肢からオブジェクトを配置することができます。ワークショップの中では、TaskCustom FieldRole Field 等を利用しました。
screenshot-open.ruumapp.com-2020.12.13-17_01_58.png
Custom Fieldを選択すると、事前定義されたカスタムフィールドから項目を選択可能です。複数選択 OK なので、表示順を気にしながらカスタムフィールドを複数選択し、Add Fields ボタンを選択します。
screenshot-open.ruumapp.com-2020.12.13-17_07_42.png
するといい感じにレイアウトしてくれます。この要領でセクションを仕上げていきます。各フィールドには、Mandatory(必須)、Read Only(読み取り専用)といった属性を定義できますので、申請者や承認者などロールに応じた適切な属性をセットしていきます。
screenshot-open.ruumapp.com-2020.12.13-17_07_59.png

テンプレートのデザイン(フロー編)

ワークショップで作成したワークフローでは、申請者から Financial Controller にタスクを渡す必要があります。さきほどの InsertRole Field を選択してから、Financial Controller を指定し、Add to Canvas ボタンを選択します。
screenshot-open.ruumapp.com-2020.12.13-17_22_09.png
続けて Financial Controller が申請内容を確認するためのフォームを指定します。セクションの右下にある Add Transition ボタンを選択します。
screenshot-open.ruumapp.com-2020.12.13-17_24_04.png
ボタンのテキスト(ラベル)、遷移先のセクション名、ステップタイプ(Data Collection StepSystem ConnectorApproval)を設定し、さいごに Create ボタンを選択します。
screenshot-open.ruumapp.com-2020.12.13-17_40_26.png
遷移先のフォームすなわち Financial Controller が申請内容を確認するためのフォームがまっさらなセクションとして作成されました。
screenshot-open.ruumapp.com-2020.12.13-17_45_20.png

ステップタイプ

ステップタイプは以下の3種類があります。Data Collection Step は、申請情報そのものや中間レビューで追記されるスタータスやメモなど、要するに最終的な承認(Approval)に至るまでに必要なデータ収集ステップです。

  • Data Collection Step
  • System Connector
  • Approval

Approval の場合、デフォルトで Approval 1 という承認者と、Send BackRejectApprove の3つの遷移先が事前定義されています。承認者は必要に応じて追加できます。
screenshot-open.ruumapp.com-2020.12.13-18_20_08.png
System Connector の場合、作成時に指定したコネクタに項目マッピングした上で OData API が呼び出されます。こちらもデフォルトで On SuccessOn Error という遷移先が事前定義されていますので、呼び出し結果の成否によって適切な後処理をセットします。
screenshot-open.ruumapp.com-2020.12.13-18_28_25.png

完成形はこちら

複数のセクションから構成される Ruum が完成しました(講師の方が事前に用意してくださっていたお手本のテンプレートをキャプチャしているので、Ruum テンプレートのタイトルが変わっています)。
screenshot-open.ruumapp.com-2020.12.13-18_44_14.png

Ruum を実行する

ワークフローの起票

Ruum Template 画面右上の Create Ruum を選択します。Ruum Template をワークフロークラスとすると、Ruum はワークフローインスタンスという関係です。クラスからインスタンスを生成(起票)するようなイメージです。

各項目に適切な値を入力し、Submit ボタンを選択します。なお、APPLICANT にも FINANCIAL CONTROLLER にも自分自身のユーザを指定しています。自己完結シナリオの悲しいところです。
screenshot-open.ruumapp.com-2020.12.13-18_53_15.png

ワークフローのレビュー

自作自演ですが、Financial Controller のつもりで必要事項を入力し、Submit for Financial Approval ボタンを選択します。また、FINANCIAL APPROVAL にも自分自身のユーザを指定しています。
screenshot-open.ruumapp.com-2020.12.13-18_58_59.png

ワークフローの承認

いよいよ承認ステップです。申請内容を確認の上、Approve ボタンを選択します。
screenshot-open.ruumapp.com-2020.12.13-19_02_15.png
承認されると Purchase Order を起票するための OData API が呼び出されます。画面をリフレッシュし、実行結果を確認してみましょう。Succcess で返されているので、無事にプロセスが完了したようです。
screenshot-open.ruumapp.com-2020.12.13-19_03_44.png

ワークフローの状態確認

Ruums(Ruum インスタンス一覧)

ワークショップのエクササイズでは、Applicant、Financial Controller、Financial Approval など複数のロールを自作自演してしまったので、どのように新規タスクを検知・確認するのか分かりませんでした。実際には各ロールに応じてタスクが遷移するので、各ユーザからどのように見えるのか確認してみましょう。ホーム画面の Ruums タブから Ruum インスタンスの一覧を確認できます。
screenshot-open.ruumapp.com-2020.12.13-19_40_05.png

Task List(タスクリスト一覧)

一番上にリストアップされている SAP TechEd - Investment Request - Session 2 - 7 を選択し、Task List タブを選択すると、この Ruum のタスク(= InsertTask を指定したもの)を確認できます。
screenshot-open.ruumapp.com-2020.12.13-19_40_20.png
特定の Ruum を指定していない状態だと、すべての Ruum のタスクが表示されます。未処理のものに限定するなど、適切にフィルタリングしないとタスクが特定するのが難しそうです。
screenshot-open.ruumapp.com-2020.12.13-19_40_33.png

Approvals(承認履歴一覧)

Approvals タブでは、承認履歴を一覧表示で確認できます。
screenshot-open.ruumapp.com-2020.12.13-19_59_32.png

その他の Ruum テンプレート

ワークショップでは、ノーコードなワークフロー開発がテーマでしたが、少しだけ歴史を振り返るで触れた通り、「最初は、プロジェクトマネジメントとコラボレーションのために開発された」そうです。その名残りをその他の Ruum テンプレートを通じて垣間見ることができます。

テンプレート一覧

ワークショップ用のテンプレートカテゴリ以外にも、以下のテンプレートカテゴリが事前定義されています。

  • Operations
  • SAP Fucused Build
  • Management
  • Sales & Customers
  • Project Management
  • Marketing & Content
  • HR Process Package
  • Nonprofit NPOs

screenshot-open.ruumapp.com-2020.12.14-11_00_02.png

テンプレートの例

以下は、Project Managemment カテゴリの Project Planning テンプレートです。プロジェクトのゴール定義、役割と責任範囲、マイルストンから定義されています。小規模プロジェクトのコラボレーションワークスペースといった感じです。
screenshot-open.ruumapp.com-2020.12.14-11_01_37.png

さいごに

ワークショップを終えて

ワークショップで利用したユーザの権限では、カスタムフィールドの追加や、システムコネクタの変更などはできませんでした。ある程度の規模感を超えると、カスタムフィールド定義やロール定義に対して統制をかけることが困難になると思うので、どのような管理ダッシュボードを備えているのか確認できなかったのは残念です。機会があれば、それらの管理者視点での検証もしてみたいと思います。

ワークショップでは比較的シンプルなワークフローを題材としましたが、どうしてもアサイン先の自動提案や、ビジネスルールに応じた複雑な分岐、他アプリとの通知連携などが気になってしまいます。ただ、こちらもある程度の複雑度を超えたら、SAP Ruum での実現を諦めるというのが答えではないかと思います(=他のオファリングで実現すればよい)。ついつい難しく構えてしまいますが、SAP Ruum のようなサービスは、とりあえず触れてみて、フィードバックし、改善されていくというループを回すことが大切なのではないでしょうか。

SAP Ruum への想い

社内コラボレーションツールとして誕生した SAP Ruum は、ビジネスユーザからの生のフィードバックを反映して、プロセス自動化ツールへの進化していったのではないかと想像します。それほどビジネスの現場には自動化したいプロセスがあるということです。

SAP のコアビジネスである Intelligent Suite がカバーする領域は、一般的に大規模導入であり、導入期間はどうしても長期化しがちです。また、同時にロングテール領域まではカバーできません(カバーすべきでもありません)。いままさにこのロングテール領域を RPA に代表されるクイックなソリューションが席巻しています。しかしながら、特に RPA は新たなシャドー IT を生み出す危険性と常に隣り合わせです。

こうした中、グローバル・エンタープライズ・ソフトウェアの雄である SAP が、ワークフローという比較的標準化しやすい領域に的を絞って、スタートアップ発のソリューションの進化を支えていることを、大変好ましく感じます。スタートアップならではの「やわらかさ」と、エンタープライズならではの「かたさ」がちょうどよくブレンドされた SAP Ruum の今後を暖かく見守りたいと思います。

SAP Ruum に触ってみよう

さいごになりましたが、公式サイトからサインアップすると、Starter エディションを無償利用できます。残念ながらワークフローは作成できませんが、事前定義テンプレートを利用した社内コラボレーションや、キャンバスにテンプレートをデザインする UX などは体験できますので、実際に触れてみてください!

参考リンク

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away