この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 を実行してください。
1 2 3 4 5 6 7 8 |
CREATE TABLE im_cookbook_197025 ( system_matter_id varchar(20), agreement_id varchar(100) NOT NULL, PRIMARY KEY(system_matter_id) ); |
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側準備
- Acrobat Signにログインし、Acrobat Sign API > APIアプリケーションから、新しくアプリケーションを登録します。
- 登録したアプリケーションの「アプリケーションID」「クライアントシークレット」をintra-mart側で使うので、控えておいてください。
- 登録したアプリケーションの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 - Webhooksより、新しくWebhookを登録します。
このとき、URLとして以下のアドレスを指定してください。
https://【intra-martのホストアドレス】:【ポート番号】/【コンテキストパス】/adobesign/webhook
また、イベントとして「契約書ワークフローが完了しました」を選択し、画像の通り通知パラメータを選択してください。
intra-mart側準備
- Jugglingプロジェクト内、
conf/oauth-provider-config/im_adobesign.xml
を開きます。
client-id
タグに「アプリケーションID」を、client-secret
タグに「クライアントシークレット」を記述してください。
- 設定を行ったJugglingプロジェクトからWARファイルを出力し、デプロイやテナント環境セットアップなどを行ってください。
- 当サンプルを利用して申請を行うユーザでログインし、外部連携アプリケーションとしてAcrobat Signを許可してください。
外部連携アプリケーションの許可の方法は、以下のドキュメントをご参照ください。
https://document.intra-mart.jp/library/sign/public/im_sign_usage_guide/texts/adobesign/setup/index.html#id4
サンプル利用準備
- データベース操作画面から、以下のSQLを実行してください。
※ 以下は PostgreSQL での SQL です。他データベースをご利用の場合は、別途テーブルを作成する SQL を実行してください。
123456CREATE TABLE im_cookbook_197025(system_matter_id varchar(20),agreement_id varchar(100) NOT NULL,PRIMARY KEY(system_matter_id)); - IM-LogicDesignerインポートファイル : im_logicdesigner-data-im_cookbook_197025.zip
上記ファイルを、IM-LogicDesigner のインポート画面からインポートしてください。 - IM-BloomMakerインポートファイル : im_bloommaker-data-im_cookbook_197025.zip
上記ファイルを、IM-BloomMaker のインポート画面からインポートしてください。
その後、ルーティング定義画面を開き、認可URIim-bloommaker-content://contents/route/im_cookbook_197025
に対して、当サンプルを利用して申請を行うユーザへ許可を設定してください。 - IM-Workflowインポートファイル : im_workflow-im_cookbook_197025.zip
上記ファイルを解凍し、IM-Workflowのインポート画面からインポートしてください。
サンプルの利用
- 申請を行いたいユーザでintra-martにログインし、Workflow > 申請一覧から、フロー「im_cookbook_197025」を申請します。
「契約名」には任意の名称を、「ファイル(PDF)」には契約書となるPDFファイルを指定し、署名を依頼する先のメールアドレスを任意個数入力してください。
- 入力されたメールアドレス宛に、署名依頼メールが届きます。
こちらをクリックして署名を行うと、Webhookによってintra-martに署名完了の通知が送信され、ワークフローの案件が完了します。 - 必要に応じて、申請前案件の一時保存や、案件の確認、案件の引戻しも行うことができます。
案件を引戻して再申請を行った場合には、新しく契約書が作成され、前回の契約書との紐づけは消えます。
レシピ
Workflow画面
IM-BloomMakerを利用して作成しています。
詳細については、以下のCookBookの記事をご参照ください。
BloomMakerでワークフロー処理モーダルを利用してWorkflowコンテンツを作成する
Workflow ルート定義
Workflowのルート定義は次の画像のようになっています。
申請ノードの処理が終わると、システムノード、および確認ノードに到達します。
システムノードは直接ユーザが処理することはできませんが、後述のLogicDesignerトリガにより実行されるフローにて、承認が行われます。
このシステムノードの承認が終わると、案件が完了します。
確認ノードでは申請が終わった後、いつでも確認が可能です。
LogicDesigner フロー定義
このサンプルでは以下のフロー定義を作成しています。
- ActionProcessCreateAgreement
- ActionProcessSystem
- Workflowのシステムノードの承認アクション処理で利用しています。
引き戻しを行った際、アドオンテーブルの情報を削除し、契約IDを案件プロパティに退避します。
- Workflowのシステムノードの承認アクション処理で利用しています。
- ActvMatterDeleteListener
- Workflowの未完了案件削除処理で利用しています。
未完了案件が削除された際、アドオンテーブルと案件プロパティの情報を削除します。
- Workflowの未完了案件削除処理で利用しています。
- CplMatterDeleteListener
- Workflowの完了案件削除処理で利用しています。
完了案件が削除された際、アドオンテーブルと案件プロパティの情報を削除します。
- Workflowの完了案件削除処理で利用しています。
- AgreementCompleteWebhook
- LogicDesigner トリガ定義から呼び出されます。
署名された契約書に紐づく案件の情報をアドオンテーブルから取り出し、システムノードに滞在しているWorkflow案件を承認します。
- LogicDesigner トリガ定義から呼び出されます。
- GetAgreementData
- BloomMaker 前処理から呼び出されます。
案件の状態に応じて分岐し、画面に表示するフォームの内容を契約書、または案件プロパティから取り出します。
- BloomMaker 前処理から呼び出されます。
LogicDesigner ユーザ定義
このサンプルでは以下のユーザ定義を作成しています。
- ApproveMatter
- システムノードの承認を行うスクリプト定義です。
フロー定義「AgreementCompleteWebhook」で利用します。
- システムノードの承認を行うスクリプト定義です。
- DeleteAddonTable
- アドオンテーブルのデータを削除するSQL定義です。
- GetAddonTable
- アドオンテーブルのデータをシステム案件IDをキーに取得するSQL定義です。
- GetAddonTableByAgreementId
- アドオンテーブルのデータを契約IDをキーに取得するSQL定義です。
- InsertAddonTable
- アドオンテーブルにデータを登録するSQL定義です。
LogicDesigner トリガ定義
このサンプルでは以下のトリガ定義を作成しています。
- im_cookbook_197025_trigger
- 契約書の署名が完了した際に通知されるWebhookを契機に、フロー定義「AgreementCompleteWebhook」を実行するトリガです。