前回の記事「Connect for Java APIを使ってみる2 ログイン/セッション管理/ログアウト」ではinvoiceAgent Connect for Java APIを利用するにあたり、必須の認証処理とセッション管理についてご説明しました。
今回は他のシステムとの連携を想定し、ファイルをinvoiceAgentへアーカイブする処理についてご説明いたします。
以下の解説を一通り実装したサンプルを本記事後半のリンクよりダウンロードいただけます。
アーカイブ処理で利用するクラス
今回利用する主なクラスは3つあります。
まずはアーカイブを実行するArchivesResourceと、ArchiveParametersです。
- com.wingarc.svf.pdfarchiver.webapp.entity.archive.ArchiveParameters
- com.wingarc.svf.pdfarchiver.client.api.resource.ArchivesResource
ArchiveParametersはアーカイブにあたり必要な保存先のパスやファイル名等のパラメータを格納するクラスです。
ArchivesResourceはアーカイブ処理を実行するクラスです。
- com.wingarc.svf.pdfarchiver.webapp.entity.archive.ArchiveResultEntry
システム間連携を想定するとアーカイブした際のIDやプレビューも必要になると思いますが、
アーカイブ処理ArchivesResource#addの戻り値として取得できる「ArchiveResultEntry」はそれらの情報を一式格納しています。
アーカイブ処理の実装
処理の流れ
メインメソッドに今回の処理の流れを記載しました。
public class C4JApi3Archive {
/** URLベース */
private static final String URL_BASE = "http://localhost:44230/spa/service";
/** ユーザID */
private static final String USERID = "admin";
/** パスワード */
private static final String PASSWORD = "admin";
/** */
private static final String DOMAIN = "local";
/** SpaClient */
private SpaClient client__ = null;
/** ログアウト用に保持 */
private AuthenticationResource auth__ = null;
/**
* メインメソッド
* @param args
*/
public static void main(String[] args) throws Exception {
//1.ログイン
C4JApi3Archive ca = new C4JApi3Archive();
try {
ca.login();
System.out.println("1.ログイン成功");
} catch (SpaClientException e) {
System.out.println("ログインに失敗しました。ID/PWを確認してください。");
e.printStackTrace();
return;
}
//2.アーカイブ
System.out.println("2.アーカイブ処理 開始");
ca.archive("C:\\sample.pdf", "/sample");
System.out.println("2.アーカイブ処理 終了");
//9.ログアウト
ca.logout();
System.out.println("9.ログアウト 成功");
}
ログイン/ログアウトについては本記事では説明は省略いたします。
本記事の後半でソースをダウンロードできますのでご確認ください。
ログイン処理の後にarchiveメソッドを実行していますので、この中身を実装していきます。
archiveメソッドの実装
まずは実装したソースをご確認ください。
/**
* 引数で指定したファイルを指定のinvoiceAgentのパスに保存します。
* 指定したパスのフォルダーがない場合は作成します。
* @param fileFullPath ローカルファイルのフルパス
* @param acvPath invoiceAgent側の保存フォルダーパス
* @throws SpaClientException SPA側で発生した例外
* @throws IOException
*/
public void archive(String fileFullPath, String acvPath) throws SpaClientException,IOException{
//ローカルファイル
File file = new File(fileFullPath);
String name = file.getName();
//アーカイブのためのパラメータを作成
ArchiveParameters parameter = new ArchiveParameters(acvPath);
//保存時のファイル名
parameter.setName(name);
//アーカイブ時にフォルダーが存在しなければ作成する
parameter.setMkdirs(true);
//アーカイブ先に同一ファイルが存在した場合は上書きする
parameter.setOverwrite(true);
//アーカイブを実行
ArchivesResource archives = new ArchivesResource(client__);
ArchiveResultEntry result = archives.add(parameter, file);
//アーカイブ結果を出力
//文書ID
System.out.println(" 文書ID : " + result.getId());
//ファイル名
System.out.println(" ファイル名 : " + result.getName());
//プレビューURL
System.out.println(" プレビューURL : " + result.getUrl());
}
ArchiveParametersにinvoiceAgent保存先のパスを指定してインスタンス化しています。
ファイル名、フォルダーがない場合に作成、同一ファイルがあれば上書きといったパラメータをセットします。
アーカイブ処理の実行をArchivesResource#addで行っています。
戻り値でArchiveResultEntryが取得できるので、保存結果はこのクラスから取得します。
シンプルなアーカイブ処理だけであれば実装は以上になります。
archiveメソッドへ追加 カスタムプロパティを付与してアーカイブする場合
電子帳簿保存法の対応等でカスタムプロパティをセットしたい場合もあるかと思います。
実装方法はさきほど使用したArchiveParameters#addCustomPropertyに以下のようにカスタムプロパティIDと値をセットする処理を追加します。
日付の指定は「yyyy/MM/dd」ではなく「yyyyMMdd」形式でセットする必要があるので注意してください。
//ID 50 取引金額
parameter.addCustomProperty(50, "10000");
//ID 51 取引日付
parameter.addCustomProperty(51, "20230413");
//ID 52 取引先
parameter.addCustomProperty(52, "ウイング商事株式会社");
カスタムプロパティIDは、
サーバ環境の設定>運用管理>カスタムプロパティ設定
で確認できます。
サンプルソースのダウンロードと実行
本記事でご説明したサンプルソースを以下よりダウンロードいただけます。
※ダウンロードボタンをクリックするとzip形式でダウンロードいただけます。解凍してご確認ください。
※ソースファイルの文字コードはUTF-8です。
※実行の際は必ず「Connect for Java APIを使ってみる1 invoiceAgent Connect for Java APIとは」でご説明したライブラリへクラスパスを通してください。
初めに記載したシンプルなアーカイブ処理と、カスタムプロパティ付きでアーカイブ処理と分けて少し汎用的になるよう実装してあります。
実行すると以下のようにコンソール出力されます。
1.ログイン成功
2.アーカイブ処理 開始
文書ID : 365
ファイル名 : sample.pdf
プレビューURL : http://localhost:44230/spa/preview/5FBFHeEYfkEe7rqDHl2ig6
2.アーカイブ処理 終了
3.アーカイブ カスタムプロパティ処理 開始
カスタムプロパティID: 50, 値: 10000
カスタムプロパティID: 51, 値: 20230413
カスタムプロパティID: 52, 値: ウイング商事株式会社
文書ID : 366
ファイル名 : sample.pdf
プレビューURL : http://localhost:44230/spa/preview/4qAedak0ReZojCYzvutBOQ
3.アーカイブ カスタムプロパティ処理 終了
9.ログアウト 成功
invoiceAgent文書管理にログインすると以下のように、「sample」「sampleCustomProp」フォルダーが作成され、「sample.pdf」ファイルが保存され、カスタムプロパティがセットされています。
ファイルの保存/アーカイブ/カスタムプロパティをセット まとめ
今回はinvoiceAgent Connect for Java APIを利用してファイルのアーカイブと、カスタムプロパティのセットを行いました。
単にファイルを保管するだけでなく、カスタムプロパティを付与し検索可能な状態で保管することで利活用を行いやすくすることは大変有用ではないかと思います。
また電子帳簿保存法対応でも、取引日付、取引先、取引金額で検索できることは必須となっているので今回の実装方法は参考にしていただけると思います。
ぜひご活用いただければと思います。
※本記事の情報は、2023年04月13日現在のものです。(invoiceAgent V10.8.1 / invoiceAgent Cloud Ver.Ver.10.8.1.1302)