はじめに
こんにちは!すぎもんです
いきなりですが、電子帳簿保存法というものをご存じですか?
いわゆるペーパーレスと言われる動きの背景にある法律で、ここ最近では請求書等の電子保存の義務化、なんてことも言われています。つまり、企業のワークフローなどにおける電子取引は今や必須になりつつあるのです。今回はそんなワークフローのDXを推し進めるサービスの一つであるAgileWorksとDataSpiderをつないでみようと思います!
今回は二部構成で記事を作成しました。後半記事はこちら↓↓↓↓↓です。
DataSpiderでAgileWorksにつないでみた(2/2)(DataSpider設定編)
AgileWorksとは
AgileWorksとは、ATLED社が提供するワークフローシステムで、社内の業務効率化と生産性の向上を実現しています。AgileWorksはアドオン開発を行うことによって、RESTを利用したユーザーシステムとの連携が可能です!
今回は、DataSpiderと接続して、「書類情報の取得」をやってみようと思います!
AgileWorksのAPI(Published API)を利用するためには、窓口となるアドオンJavaプログラム(Bricklet)とAgileWorksServiceBus(ASB)の作成が必要です。
AgileWorks側の前提条件は下記の通りです。
・AgileWorksServiceBus(ASB)のサービスが実行されている
・AgileWorksのアドオン開発環境の準備ができている
・公開されているフォームがあり、フォームで作成した書類が1件以上存在する
※ASBを経由せずにBrickletを呼び出す方法もあるようですが今回は言及しません。
それでは、早速やっていきましょう!
Bricklet(Javaプログラム)の作成
まず、Brikletの開発です。eclipseを起動します。
パッケージエクスプローラで、Brickletクラスを作成します。
今回は下記のクラス名にします。
クラス名 : jp.atlet.agileworks.sample.DssTestBricklet
作成したクラスに、メソッドを追加します。
今回はAgileWorks Service Bus(以降、ASB)経由で実行させるので、
AsbCallRequestModel, AsbCallResponseModel を引数としたメソッドを追加し、@Procedureアノテーションを付与します。PublishedAPIは、DocServiceとBrickletLoggerを使用するので @PapiInjectアノテーションで追加しています。
指定された「書類ID」と「フォームコード」を条件に、書類検索をして、「書類ID」,「書類状態」,「書類の申請ユーザのユーザコード」を返します。(※処理詳細は省略)
ソースコードは下記です。(ご参考)
public class DssTestBricklet {
@PapiInject
DocService docService;
@PapiInject
BrickletLogger logger;
@Procedure
public void getDocInfo(AsbCallRequestModel req, AsbCallResponseModel res) {
long docId;
String formCode;
try {
JSONObject jsonObj = new JSONObject(req.getMessage().getText());
docId = Long.parseLong(jsonObj.getString("docId"));
formCode = jsonObj.getString("formCode");
// 書類検索用リクエストオブジェクト
SelectDocRequestModel selectRequest =
docService.createRequestModel(SelectDocRequestModel.class);
// 書類ビュー set
selectRequest.getDocView().setFormCode(formCode);
// 検索条件
SelectDocConditionModel condition = selectRequest.getCondition();
condition.setFormCode(formCode);
condition.setDocId(docId);
// 検索結果項目
DocViewColumnModel colDocId = selectRequest.getDocView().getColumnList().add();
colDocId.setType(EnumDocViewColumnType.DOC_ID);
DocViewColumnModel colFlowStatus = selectRequest.getDocView().getColumnList().add();
colFlowStatus.setType(EnumDocViewColumnType.FLOW_STATUS);
DocViewColumnModel applyUser = selectRequest.getDocView().getColumnList().add();
applyUser.setType(EnumDocViewColumnType.APPLY_USER_CODE);
// 検索
SelectResponseModel selectResponse = docService.selectDoc(selectRequest);
if((EnumStatusType.SUCCESS).equals(selectResponse.getResultStatus().getStatus())) {
// 結果をセット
JSONObject resJson = new JSONObject();
RecordListModel recordList = selectResponse.getResultSet().getRecordList();
if(recordList.size() > 0) {
for(RecordModel record : recordList) {
EntryListModel entryList = record.getEntryList();
resJson.put("docId", entryList.get(0).getValue());
resJson.put("flowStatus", entryList.get(1).getValue());
resJson.put("applyUserCode", entryList.get(2).getValue());
}
}
res.getMessage().setText(resJson.toString());
}
else {
logger.error("検索エラー");
}
} catch (JSONException e) {
// TODO 自動生成された catch ブロック
logger.error(e.getMessage());
}
}
}
次に、Bricklet設定ファイル(bricklet.xml)を設定します。
[bricklet]-[resources]-bricklet.xml に、今回作成したBrickletの情報を追加します。
(Brickletの見出しになる。任意の文字列)
caption属性 : DSS Test
(Brickletの完全修飾クラス名)
classname属性 : jp.atlet.agileworks.sample.DssTestBricklet
(開発元ベンダーの名称)
vendername属性 : SAISON
(Brickletのバージョン番号)
version属性 : 1.0
下記のように設定しました。
<bricklet caption="DSSTest" classname="jp.atlet.agileworks.sample.DssTestBricklet" vendername="SAISON" version="1.0"/>
続いて、デプロイ用のZIPアーカイブファイルを作成します。
[bricklet]-[build]-builud.xmlを右クリック、[実行]-[Antビルド]を実行します。
ビルド後に、[deploy]-[bricklet]ディレクトリをリフレッシュ(F5)すると、zipファイルが作成されていることを確認できます。
briklet-dss.zip
というZIPファイルが作成されていることが、確認できました。
Agileworksの設定 (ZIPファイルのデプロイ)
ZIPファイルを作成したので、次はデプロイをします。
AgileWorks管理者サイトにログインし、[アドオン管理]-[アドオン設定]-[Bricklet]-[デプロイ]で、zipファイルをアップロードします。
ユーザー名の「イニシャルのアイコン」を選択し、「アカウントID」を取得しておきます。後で使うのでどこかに保存しておきましょう!
Brickletデプロイのウィンドウが表示されたら、「ファイルを選択」で、作成したZIPファイルを選択し、「デプロイ」をクリックしましょう。
今回作成したDSS TESTがデプロイされました。
Bricklet.xmlで設定した内容が表示されていることが確認できます。
Javaプログラム(Bricklet)の準備ができました。
AgileWorksServiceBus(ASB)の設定
次に、AgileWorksServiceBus(ASB)の設定を行います。
今回は「sa1ディレクトリ」を利用して、ASB設定を行います。
[sa1]-[resurces]-[asb-sa.xml]をダブルクリックして、サービスアセンブリ設定画面を開きます。
下記の通り設定しました。
コード : dss-test
名称 : dss-test
バージョン : 任意
ベンダー : 任意
次に、ルートを追加します。
「ルート追加」をクリックして、新規サービスルートの追加を行います。
コード、名称を入力しルート種別は「HTTP受信ルート」を選択し、OKを選択します。
開始ノードが追加されます。このノードは特に変更しません。
この設定で、http://{ASBサーバのホスト}:7501/dss-test/testGetDocInfo/
というURLで、ASBのHTTP受信受付ができるようになります。
続けてBrickletを実行するためのBricklet呼出ノードを追加します。「ノードの追加」をクリックし、コードbricklet
、名称GetDocInfo Bricklet
、ノード種別Bricklet呼出
を選択し、OKします。
Bricklet呼出ノードのプロパティを、下記の通りに変更して保存します。
クラス名 : jp.atlet.agileworks.sample.DssTestBricklet
メソッド名 : getDocInfo
AgileWorksServiceBus(ASB)のデプロイ用にZIPファイルを作成します。
[sa1]-[build]-build.xmlを、Ant実行すると、プロジェクト直下の[deploy]-[asb]フォルダ下に、「sa1-1.0.0.zip」という名称のZIPファイルが配置されます。
あと少しです
作成したzipファイルをアップロードし、サービスアセンブリをAgileWorksにデプロイします!
管理サイトにログインし、「アドオン管理」-「アドオン設定」-「ASB設定」-「新規」-「新規アップロード」でZIPファイルをアップロードします。
dss-testのサービスアセンブリが追加されました。
AgileWoks側の準備として、接続確認で使用するデータを確認します。AgileWorksで作成した任意の書類を開き、書類IDとフォームコードを確認します。
今回使用する書類IDは20
、フォームコードはkeiyaku_form
です。
以上でAgileWorksの準備は完了です。
少々長くなってきましたので・・
次回の記事で、DataSpider側の設定をやっていきます!
最後に
今回は、AgileWorksのAPIを利用するために、「アドオンJavaプログラム(Bricklet)の作成」と「AgileWorksServiceBus(ASB)の作成」をやってみました!Javaプログラムの作成が必要になるので、ひと手間必要な連携ではありますが、皆さんの何かの参考になれば幸いです!
少々長くなってしまいましたので、後編として別記事でDataSpider設定について投稿します。こちらも併せてご一読ください!
DataSpiderでAgileWorksにつないでみた(2/2)(DataSpider設定編)
このブログでは、今後も様々な実際にやってみた検証や、日々の業務で学んだり思いついた開発Tipsなどを投稿していきたいと思います!
お読みいただきありがとうございました。それでは、また!