LoginSignup
1
0

More than 1 year has passed since last update.

DataSpiderでAgileWorksにつないでみた(1/2)(アドオン開発編)

Last updated at Posted at 2022-12-02

はじめに

こんにちは!すぎもんです:grinning:

いきなりですが、電子帳簿保存法というものをご存じですか?
いわゆるペーパーレスと言われる動きの背景にある法律で、ここ最近では請求書等の電子保存の義務化、なんてことも言われています。つまり、企業のワークフローなどにおける電子取引は今や必須になりつつあるのです。今回はそんなワークフローのDXを推し進めるサービスの一つであるAgileWorksとDataSpiderをつないでみようと思います!

今回は二部構成で記事を作成しました。後半記事はこちら↓↓↓↓↓です。
DataSpiderでAgileWorksにつないでみた(2/2)(DataSpider設定編)

AgileWorksとは

AgileWorksとは、ATLED社が提供するワークフローシステムで、社内の業務効率化と生産性の向上を実現しています。AgileWorksはアドオン開発を行うことによって、RESTを利用したユーザーシステムとの連携が可能です!
今回は、DataSpiderと接続して、「書類情報の取得」をやってみようと思います!

AgileWorksのAPI(Published API)を利用するためには、窓口となるアドオンJavaプログラム(Bricklet)とAgileWorksServiceBus(ASB)の作成が必要です。
image.png

AgileWorks側の前提条件は下記の通りです。
 ・AgileWorksServiceBus(ASB)のサービスが実行されている
 ・AgileWorksのアドオン開発環境の準備ができている
 ・公開されているフォームがあり、フォームで作成した書類が1件以上存在する

  ※ASBを経由せずにBrickletを呼び出す方法もあるようですが今回は言及しません。

それでは、早速やっていきましょう!

Bricklet(Javaプログラム)の作成

まず、Brikletの開発です。eclipseを起動します。
パッケージエクスプローラで、Brickletクラスを作成します。
今回は下記のクラス名にします。
クラス名 : jp.atlet.agileworks.sample.DssTestBricklet
image.png
作成したクラスに、メソッドを追加します。
今回は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"/>
image.png
続いて、デプロイ用のZIPアーカイブファイルを作成します。
[bricklet]-[build]-builud.xmlを右クリック、[実行]-[Antビルド]を実行します。
image.png
ビルド後に、[deploy]-[bricklet]ディレクトリをリフレッシュ(F5)すると、zipファイルが作成されていることを確認できます。
image.png
briklet-dss.zip というZIPファイルが作成されていることが、確認できました。

Agileworksの設定 (ZIPファイルのデプロイ)

ZIPファイルを作成したので、次はデプロイをします。

AgileWorks管理者サイトにログインし、[アドオン管理]-[アドオン設定]-[Bricklet]-[デプロイ]で、zipファイルをアップロードします。

ユーザー名の「イニシャルのアイコン」を選択し、「アカウントID」を取得しておきます。後で使うのでどこかに保存しておきましょう!

Brickletデプロイのウィンドウが表示されたら、「ファイルを選択」で、作成したZIPファイルを選択し、「デプロイ」をクリックしましょう。
image.png
今回作成したDSS TESTがデプロイされました。
Bricklet.xmlで設定した内容が表示されていることが確認できます。
image.png
Javaプログラム(Bricklet)の準備ができました。

AgileWorksServiceBus(ASB)の設定

次に、AgileWorksServiceBus(ASB)の設定を行います。
今回は「sa1ディレクトリ」を利用して、ASB設定を行います。

[sa1]-[resurces]-[asb-sa.xml]をダブルクリックして、サービスアセンブリ設定画面を開きます。
下記の通り設定しました。

  コード   : dss-test
  名称    : dss-test
  バージョン : 任意
  ベンダー  : 任意

image.png

次に、ルートを追加します。
「ルート追加」をクリックして、新規サービスルートの追加を行います。

コード、名称を入力しルート種別は「HTTP受信ルート」を選択し、OKを選択します。
開始ノードが追加されます。このノードは特に変更しません。
image.png

この設定で、http://{ASBサーバのホスト}:7501/dss-test/testGetDocInfo/というURLで、ASBのHTTP受信受付ができるようになります。
image.png
続けてBrickletを実行するためのBricklet呼出ノードを追加します。「ノードの追加」をクリックし、コードbricklet、名称GetDocInfo Bricklet、ノード種別Bricklet呼出を選択し、OKします。image.png

Bricklet呼出ノードのプロパティを、下記の通りに変更して保存します。

  クラス名  : jp.atlet.agileworks.sample.DssTestBricklet
  メソッド名 : getDocInfo

AgileWorksServiceBus(ASB)のデプロイ用にZIPファイルを作成します。
[sa1]-[build]-build.xmlを、Ant実行すると、プロジェクト直下の[deploy]-[asb]フォルダ下に、「sa1-1.0.0.zip」という名称のZIPファイルが配置されます。
image.png

あと少しです:point_up:

作成したzipファイルをアップロードし、サービスアセンブリをAgileWorksにデプロイします!
管理サイトにログインし、「アドオン管理」-「アドオン設定」-「ASB設定」-「新規」-「新規アップロード」でZIPファイルをアップロードします。
image.png
image.png
dss-testのサービスアセンブリが追加されました。
image.png
AgileWoks側の準備として、接続確認で使用するデータを確認します。AgileWorksで作成した任意の書類を開き、書類IDとフォームコードを確認します。
image.png

今回使用する書類IDは20、フォームコードはkeiyaku_formです。
以上でAgileWorksの準備は完了です。

少々長くなってきましたので・・
次回の記事で、DataSpider側の設定をやっていきます!

最後に

今回は、AgileWorksのAPIを利用するために、「アドオンJavaプログラム(Bricklet)の作成」と「AgileWorksServiceBus(ASB)の作成」をやってみました!Javaプログラムの作成が必要になるので、ひと手間必要な連携ではありますが、皆さんの何かの参考になれば幸いです!

少々長くなってしまいましたので、後編として別記事でDataSpider設定について投稿します。こちらも併せてご一読ください!
DataSpiderでAgileWorksにつないでみた(2/2)(DataSpider設定編)

このブログでは、今後も様々な実際にやってみた検証や、日々の業務で学んだり思いついた開発Tipsなどを投稿していきたいと思います!

お読みいただきありがとうございました。それでは、また!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0