システム連携ネタでよくブログを書いている日下です。
※ちなみにこれまでのネタはこちら
既存の Excel の申請書を使う形でワークフロー化したい。そういう話をよく耳にします。
理由としては
- 利用者(ユーザ)への教育の手間の軽減
- ITに弱いユーザでも Excel なら使える
といった点があげられます。
ということで、今回はユーザが Excel の申請書に入力して、そこから Questetra BPM Suite の業務(ワークフロー)を開始できるようにする、という方法を紹介します。
2: Excel と Questetra の連携の実現方法の概要
3: 前提となる知識
4: 実現方法の詳細
4.1: Questetra BPM Suite 側の準備
4.2: Excel 側の準備
1: ユーザの操作イメージ
ユーザは既存の Excel の申請書にデータを入力して、今回準備する「送信」ボタンを押せば、Questetra BPM Suite の該当業務がスタートされ、業務が流れていきます。
2: Excel と Questetra の連携の実現方法の概要
処理の流れは以下の通りです。
- Excel の画面上のボタンを押すと、マクロ(VBA)の処理が実行される。
- マクロ(VBA)で Excel の各セルに入力されたデータを取り出して、Questetra BPM Suite に http リクエストの形で送付する。
- Questetra BPM Suite はそれを「メッセージ開始イベント(HTTP)」で受けて、業務を開始する。
3: 前提となる知識
Excel マクロ(VBA)の知識が必要になりますが、プログラミング経験がある方であれば、すぐに理解できるレベルです。
またプログラミング経験がない方であっても、少し勉強すれば十分に理解できる簡単なレベルの内容です。
4: 実現方法の詳細
4.1: Questetra BPM Suite 側の準備
Excel からデータが送られてきたら起動するプロセスモデルを準備する。
「メッセージ開始イベント(HTTP)」というデータの受け口が必要となる。
※関連マニュアル M221: 特定URIにHTTPリクエストがあった時に自動的に開始されるように設定する
※Excel との接続部分はリリースをしないと確定されないので注意してください。リリース済で「メッセージ開始イベント(HTTP)」のプロパティの「URL・パラメータ詳細」を開くと以下のような画面が表示されますので、それにあわせて次の Excel 側の準備を進めてください。
4.2: Excel 側の準備
申請書のフォーマットにあわせて ExcelVBA を準備する(以下のサンプルコードを元に作成する)。
※サンプルコードを含む Excel ファイルとそのサンプルに対応してワークフローアプリアーカイブ(入館申請書)のダウンロードはこちらから。サンプルの Excel ファイルそのままで試す場合でも、少なくともワークフローアプリをインポートした Questetra BPM Suite の環境にあわせて、後述の14~15行目の url、key の変更が必要になります。
※ExcelVBA(マクロ)の設定方法は一般的な話になりますので、詳細は割愛します。こちらのサイト等を参考にしてください。このサイトは Excel2013 について記載されていますが、古いバージョンの場合でも設定方法が異なるだけで、対応は可能です。
サンプルコード(入館申請書)
Sub ボタン1_Click()
Dim params() As String
Dim values() As String
ReDim params(16)
ReDim values(16)
Dim i As Integer
i = 0
Dim url As String
Dim key As String
url = "https://xxxxxxxx/System/Event/MessageStart/xxx/xxx/start"
key = "xxxxxxxx"
params(i) = "q_date"
values(i) = Range("C4").Value
i = i + 1
params(i) = "q_datetimeEnter"
values(i) = Range("C5").Value
i = i + 1
params(i) = "q_datetimeExit"
values(i) = Range("C6").Value
i = i + 1
params(i) = "q_organization"
values(i) = Range("D7").Value
i = i + 1
params(i) = "q_name"
values(i) = Range("D8").Value
i = i + 1
params(i) = "q_email"
values(i) = Range("D9").Value
i = i + 1
params(i) = "q_title"
values(i) = Range("C10").Value
i = i + 1
params(i) = "q_place"
values(i) = Range("C11").Value
i = i + 1
params(i) = "q_reason"
values(i) = Range("C12").Value
i = i + 1
params(i) = "q_note"
values(i) = Range("C13").Value
i = i + 1
send url & "?key=" & key, params, values
End Sub
Public Function send(url As String, params() As String, values() As String) As String
Dim httpObj As Object
Set httpObj = CreateObject("MSXML2.XMLHTTP")
Dim parameters As String
parameters = ""
For i = 0 To UBound(params)
If Len(parameters) > 0 Then
parameters = parameters & "&"
End If
parameters = parameters & params(i) & "=" & values(i)
Next
httpObj.Open "POST", url, False
httpObj.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded" & vbCrLf
httpObj.send (parameters)
If httpObj.Status = 200 Then
MsgBox ("送信成功")
Else
MsgBox ("送信失敗" & vbCrLf & "status=" & httpObj.Status)
End If
End Function
サンプルコードから編集すべき部分は以下の通り。
-
- 1行目の Sub 名を追加したボタンにあわせて変更。
Sub ボタン1_Click()
-
- Excel から送付するデータの数が多い場合は、4~5行目のパラメータの数を送付したいデータ数にあわせて変更。
ReDim params(16)
ReDim values(16)
-
- 14~15行目の url、key を Questetra BPM Suite 側の「メッセージ開始イベント(HTTP)」の詳細にあわせて変更。
url = "https://xxxxxxxx/System/Event/MessageStart/xxx/xxx/start"
key = "xxxxxxxx"
-
- 17行目以降を「メッセージ開始イベント(HTTP)」の受信パラメータ名と Excel からデータを取り出すセル位置にあわせてそれぞれ変更。もしデータの数が多い場合には以下の3行をセットでコピーして増やす(params が送付パラメータ名で、Range のカッコ内が Excel のどのセルからデータを抜き出すかの設定です)。
params(i) = "q_date"
values(i) = Range("C4").Value
i = i + 1
※後半の send() という Function については変更不要。
「送信」ボタンを押して「送信成功」と表示されれば Questetra BPM Suite 側のプロセスが開始されているはずです。もし「送信失敗」と表示された場合には、以下のような問題が考えられます。
※Questetra BPM Suite 側でエラーとなっている場合には、ワークフローアプリの管理者にエラー内容がメールで通知されますので、そちらで詳細をご確認ください。
- url ~ keyの設定が Questetra BPM Suite 側の設定と一致していない
- データ送付する各パラメータ名の設定が Questetra BPM Suite 側の設定と一致していない
- Questetra BPM Suite 側で必須設定にしているデータが送付するよう設定されていない
- 選択型・ユーザ型・日付型・日時型データについて Questetra BPM Suite 向けデータ書式と一致していない
VBA についての知識は少し必要ですが、比較的簡単な設定で Excel の申請書を入力画面がわりにできることをご理解いただけたかと思います。
もし、ご質問等がありましたら、お問い合わせフォームからお気軽にご連絡ください。
無料で始められる Questetra BPM Suite
こちらの Web フォームからお申込みいただきますと Questetra の無料お試しアカウントが作成できます。上記のものを含め、全ての機能が使えますので、ぜひお試しください。
ピンバック: 無料で試せる BPM ワークフローと RPA ツールとの連携 - Questetra
ピンバック: クラウド BPM ワークフローの他システム連携事例集(2019年6月版) - Questetra
ピンバック: RPA ツールと無料で試せる BPM ワークフローとの連携 - Questetra