CookBook

Adobe Acrobat Sign連携を利用する

投稿日:2021-06-10 更新日:

このCookBookでは、IM-Signを利用したサンプルを紹介します。
サンプルでは、Workflow/BISの案件に紐づいたAdobe Acrobat Sign(以下Acrobat Sign)の契約書を作成して、署名を依頼します。
署名が行われるとWorkflow/BISの案件も完了するようになっています。
Workflow/BIS処理画面にBloomMaker、各種サーバ処理にLogicDesignerを利用しています。

以下は、このサンプルの構成図のイメージです。

前提条件

Acrobat Signのアカウントにログインできる必要があります。
https://secure.jp1.echosign.com/public/login

IM-SignはAcrobat Signアカウントと連携して契約書を作成します。
また、依頼した契約書の署名が完了した際にWebhookを利用してAcrobat Signからintra-martへ通知を行います。
これらの連携を行うため、intra-martとAcrobat Signは相互に通信できる環境である必要があります。
WebサーバにIPアドレス等のアクセス制限を設定している場合は、intra-martとAcrobat Sign間の通信が行えるよう、設定を緩和してください。

intra-martへのアクセスはSSL通信できる必要があります。
Webサーバ、アプリケーションサーバのSSL通信機能を有効にしてください。

以下のモジュールが必要です。

  • IM-Workflow
  • IM-BIS
  • IM-LogicDesigner
  • IM-BloomMaker
  • IM-Sign

完成イメージ


IM-BloomMaker で作成した画面です。
IM-Workflowの申請・再申請・詳細・確認時に表示されます。
契約名・契約に用いるPDFファイル・署名の依頼先メールアドレスを入力します。


IM-Workflowのフロー定義です。
申請時に契約書を作成し、署名を依頼します。
システムノードにて契約書が署名されるのを待機し、署名されたら先に進み、案件を完了します。
詳細の確認も可能です。


IM-LogicDesignerで作成した、IM-Workflowの申請アクション処理です。
行われた処理が申請であるならば、Acrobat Signと連携し、契約書を作成しています。
処理が一時保存であるならば、代わりに案件プロパティに入力情報を保存しています。

サンプルの概要

この項目では、概要に絞った説明を行います。
詳細な利用手順については後述します。

DDL を予め実行する必要があります。データベース操作画面から実行してください。
※ 以下は PostgreSQL での SQL です。他データベースをご利用の場合は、別途テーブルを作成する SQL を実行してください。

IM-BloomMakerインポートファイル : im_bloommaker-data-im_cookbook_197025.zip
IM-BloomMaker のインポート画面からインポートしてください。
なお、インポート後にはIM-BloomMaker ルーティング定義の認可設定が必要ですのでご注意ください。

IM-LogicDesignerインポートファイル : im_logicdesigner-data-im_cookbook_197025.zip
IM-LogicDesigner のインポート画面からインポートしてください。

IM-Workflowインポートファイル : im_workflow-im_cookbook_197025.zip
Zipを解凍し、IM-Workflowのインポート画面からインポートしてください。

サンプルに含まれる定義情報は以下の表の通りです。

種類 定義名 補足説明
BloomMakerコンテンツ im_cookbook_197025 メインとなるWorkflowの処理画面
BloomMakerルーティング定義 im_cookbook_197025 上記BloomMakerコンテンツに対するルーティング定義
LogicDesignerフロー定義 ActionProcessCreateAgreement Workflowの申請アクション処理で利用。契約書を作成しユーザデータを作成する。
LogicDesignerフロー定義 ActionProcessSystem Workflowの承認アクション処理で利用。引戻し時のユーザデータを削除する。
LogicDesignerフロー定義 ActvMatterDeleteListener Workflow未完了案件削除処理で利用。ユーザデータを削除する。
LogicDesignerフロー定義 AgreementCompleteWebhook 契約書の署名が完了した際のWebhookのトリガにより実行。Workflowを先に進める。
LogicDesignerフロー定義 CplMatterDeleteListener Workflow完了案件削除処理で利用。ユーザデータを削除する。
LogicDesignerフロー定義 GetAgreementData BloomMaker前処理で利用。契約書のデータを取得する。
LogicDesignerユーザ定義 ApproveMatter LogicDesignerフロー定義で利用。システムノードにて承認を行うスクリプト処理。
LogicDesignerユーザ定義 DeleteAddonTable LogicDesignerフロー定義で利用。アドオンデータを削除するSQL。
LogicDesignerユーザ定義 GetAddonTable LogicDesignerフロー定義で利用。アドオンデータを取得するSQL。
LogicDesignerユーザ定義 GetAddonTableByAgreementId LogicDesignerフロー定義で利用。アドオンデータを取得するSQL。
LogicDesignerユーザ定義 InsertAddonTable LogicDesignerフロー定義で利用。アドオンデータを作成するSQL。
LogicDesignerトリガ定義 im_cookbook_197025_trigger 契約書の署名が完了した際のWebhookのトリガ。
Workflowコンテンツ定義 im_cookbook_197025 BloomMakerコンテンツ、LogicDesignerフロー定義を設定
Workflowルート定義 im_cookbook_197025
Workflowフロー定義 im_cookbook_197025

当サンプルでは、入力されたデータを以下の形で保存します。

  • 契約書情報
    • 申請された案件に紐づく契約書の情報は、 Acrobat Signのアカウントに連携して保存します。
  • ユーザデータ(案件プロパティ)
    • 一時保存時の入力情報が格納されます。
  • アドオンテーブル
    • 申請された案件のシステム案件IDと、契約書の契約IDを紐づける情報を格納します。

Acrobat Signとの連携は、以下のことを行ってください。

  • Acrobat Sign側
    • OAuthアプリケーションとしてintra-martを登録
    • Webhook通知先としてintra-martのホストを登録
  • intra-mart側
    • 外部アプリケーションとしてAcrobat Signの登録と許可

当サンプルは以下の環境で動作を確認できます。
ロール「IM-Workflow ユーザ」を持つユーザでログインし、フロー「im_cookbook_197025」を申請してください。

  • intra-mart Accel Platform(Advanced) 2021 Spring(8.0.28)以降のバージョンであること
  • IM-Signを利用していること
  • テナント環境セットアップで、サンプルデータがインポート済みであること

利用手順

以下の手順では、必要に応じてIM-Sign 利用ガイド内、セットアップも参考にしてください。

Acrobat Sign側準備

  1. Acrobat Signにログインし、Acrobat Sign API > APIアプリケーションから、新しくアプリケーションを登録します。
  2. 登録したアプリケーションの「アプリケーションID」「クライアントシークレット」をintra-mart側で使うので、控えておいてください。
  3. 登録したアプリケーションのOAuth設定を開き、リダイレクトURLとして以下のアドレスを設定します。
    https://【intra-martのホストアドレス】:【ポート番号】/【コンテキストパス】/oauth/redirect

    また、有効な範囲として以下を有効化してください。
    user_read:account
    user_write:account
    user_login:account
    agreement_read:account
    agreement_write:account
    widget_read:account
    widget_write:account
    library_read:account
    library_write:account
    workflow_read:account
    webhook_read:account
    webhook_write:account
    webhook_retention:account
  4. Webhooksより、新しくWebhookを登録します。
    このとき、URLとして以下のアドレスを指定してください。
    https://【intra-martのホストアドレス】:【ポート番号】/【コンテキストパス】/adobesign/webhook
    また、イベントとして「契約書ワークフローが完了しました」を選択し、画像の通り通知パラメータを選択してください。

intra-mart側準備

  1. Jugglingプロジェクト内、conf/oauth-provider-config/im_adobesign.xmlを開きます。
    client-idタグに「アプリケーションID」を、client-secretタグに「クライアントシークレット」を記述してください。
  2. 設定を行ったJugglingプロジェクトからWARファイルを出力し、デプロイやテナント環境セットアップなどを行ってください。
  3. 当サンプルを利用して申請を行うユーザでログインし、外部連携アプリケーションとしてAcrobat Signを許可してください。
    外部連携アプリケーションの許可の方法は、以下のドキュメントをご参照ください。
    https://document.intra-mart.jp/library/sign/public/im_sign_usage_guide/texts/adobesign/setup/index.html#id4

サンプル利用準備

  1. データベース操作画面から、以下のSQLを実行してください。
    ※ 以下は PostgreSQL での SQL です。他データベースをご利用の場合は、別途テーブルを作成する SQL を実行してください。
  2. IM-LogicDesignerインポートファイル : im_logicdesigner-data-im_cookbook_197025.zip
    上記ファイルを、IM-LogicDesigner のインポート画面からインポートしてください。
  3. IM-BloomMakerインポートファイル : im_bloommaker-data-im_cookbook_197025.zip
    上記ファイルを、IM-BloomMaker のインポート画面からインポートしてください。
    その後、ルーティング定義画面を開き、認可URIim-bloommaker-content://contents/route/im_cookbook_197025に対して、当サンプルを利用して申請を行うユーザへ許可を設定してください。
  4. IM-Workflowインポートファイル : im_workflow-im_cookbook_197025.zip
    上記ファイルを解凍し、IM-Workflowのインポート画面からインポートしてください。

サンプルの利用

  1. 申請を行いたいユーザでintra-martにログインし、Workflow > 申請一覧から、フロー「im_cookbook_197025」を申請します。
    「契約名」には任意の名称を、「ファイル(PDF)」には契約書となるPDFファイルを指定し、署名を依頼する先のメールアドレスを任意個数入力してください。
  2. 入力されたメールアドレス宛に、署名依頼メールが届きます。

    こちらをクリックして署名を行うと、Webhookによってintra-martに署名完了の通知が送信され、ワークフローの案件が完了します。
  3. 必要に応じて、申請前案件の一時保存や、案件の確認、案件の引戻しも行うことができます。
    案件を引戻して再申請を行った場合には、新しく契約書が作成され、前回の契約書との紐づけは消えます。

レシピ

Workflow画面

IM-BloomMakerを利用して作成しています。

詳細については、以下のCookBookの記事をご参照ください。
BloomMakerでワークフロー処理モーダルを利用してWorkflowコンテンツを作成する

Workflow ルート定義

Workflowのルート定義は次の画像のようになっています。

申請ノードの処理が終わると、システムノード、および確認ノードに到達します。
システムノードは直接ユーザが処理することはできませんが、後述のLogicDesignerトリガにより実行されるフローにて、承認が行われます。
このシステムノードの承認が終わると、案件が完了します。
確認ノードでは申請が終わった後、いつでも確認が可能です。

LogicDesigner フロー定義

このサンプルでは以下のフロー定義を作成しています。

  • ActionProcessCreateAgreement
    • Workflowの申請アクション処理で利用しています。
    • 申請時の処理、または、一時保存時の処理に分岐します。
      申請時には、Acrobat Signに連携して契約書を作成し、アドオンテーブルに案件と契約を紐づける情報を保存します。
      一時保存時には、ファイルを除く画面のフォーム情報を、案件プロパティに保存します。
  • ActionProcessSystem
    • Workflowのシステムノードの承認アクション処理で利用しています。
      引き戻しを行った際、アドオンテーブルの情報を削除し、契約IDを案件プロパティに退避します。
  • ActvMatterDeleteListener
    • Workflowの未完了案件削除処理で利用しています。
      未完了案件が削除された際、アドオンテーブルと案件プロパティの情報を削除します。
  • CplMatterDeleteListener
    • Workflowの完了案件削除処理で利用しています。
      完了案件が削除された際、アドオンテーブルと案件プロパティの情報を削除します。
  • AgreementCompleteWebhook
    • LogicDesigner トリガ定義から呼び出されます。
      署名された契約書に紐づく案件の情報をアドオンテーブルから取り出し、システムノードに滞在しているWorkflow案件を承認します。
  • GetAgreementData
    • BloomMaker 前処理から呼び出されます。
      案件の状態に応じて分岐し、画面に表示するフォームの内容を契約書、または案件プロパティから取り出します。

LogicDesigner ユーザ定義

このサンプルでは以下のユーザ定義を作成しています。

  • ApproveMatter
    • システムノードの承認を行うスクリプト定義です。
      フロー定義「AgreementCompleteWebhook」で利用します。
  • DeleteAddonTable
    • アドオンテーブルのデータを削除するSQL定義です。
  • GetAddonTable
    • アドオンテーブルのデータをシステム案件IDをキーに取得するSQL定義です。
  • GetAddonTableByAgreementId
    • アドオンテーブルのデータを契約IDをキーに取得するSQL定義です。
  • InsertAddonTable
    • アドオンテーブルにデータを登録するSQL定義です。

LogicDesigner トリガ定義

このサンプルでは以下のトリガ定義を作成しています。

  • im_cookbook_197025_trigger
    • 契約書の署名が完了した際に通知されるWebhookを契機に、フロー定義「AgreementCompleteWebhook」を実行するトリガです。

-CookBook
-, , , , , ,

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

no image

変数のkey, valueを取り出して配列にするアクション、式表現の利用方法

このCookBookでは、2022 Spring で新しく追加された以下のアクションと式表現について紹介します。 アクション変数○に○の各キー名を配列にして代入する変数○に○の各要素の値を配列にして代 …

no image

IM-BloomMaker で ページアイコン(favicon) を設置する方法

この CookBook では、IM-BLoomMaker でページアイコン(favicon)を設置する方法について紹介します。intra-mart Accel Platform 2023 Spring …

no image

IM-BloomMaker フォーム部品(Bulma)を使用したバリデーション処理の作成

このCookBookでは、intra-mart Accel Platform 2020 Summer から利用可能になったコンテンツ種別「Bulma」の「フォーム部品(Bulma)」を使用したバリデー …

no image

スクリプト開発モデルで作成した1つのページソースを複数の画面で利用する

このCookBookでは、任意のスクリプト開発モデルプログラムをコールして部分ページソース挿入を行う方法を紹介します。 部分ページソース挿入は<imart type=”include”>タ …

no image

IM-BloomMaker リッチテーブルで大量のデータを扱う時に読み込みを速くする方法

このCookBookでは、リッチテーブルエレメントで大量のデータを扱う時にデータの読み込みを速くする方法について紹介しています。 intra-mart Accel Platform 2023 Autu …