API
公開 API:Alice 機能が有効な場合に公開APIで下位2階層以上の組織のアカウントを取得できるように改善
Ver.4.1.0 SDB-1542
概要
Alice 機能が有効な場合に、公開 API で下位2階層以上の組織のアカウントを取得できるように改善しました。 詳細は、JavaDoc を参照して下さい。
public List<Account> Account.getSubordinateGroupList(int depth)
下位組織のアカウントをリストで返す。
自身が組織でない場合は空の配列を返す。
パラメータ:
depth - 再帰的に辿る最大階層数。1を指定した場合は下位1階層組織のリストを返す。
戻り値:
下位組織のアカウントリスト。下位組織が1件も無い場合は空のリストが返る。
public List<Account> Account.getSubordinateUserList(int depth)
下位に属するユーザのアカウントをリストで返す。
自身が組織でない場合は空の配列を返す。
パラメータ:
depth - 再帰的に辿る最大階層数。1を指定した場合は下位1階層のユーザのリストを返す。
戻り値:
下位に属するユーザのアカウント。
公開 API:単一選択部品の部品定義情報を取得する API を追加
Ver.4.1.0 SDB-2134
概要
単一選択(項目)、単一選択(メニュー)の部品定義情報を取得する API を追加しました。 詳細は、JavaDoc を参照して下さい。
■単一選択(項目)の定義インターフェース
jp.co.dreamarts.hibiki.smartdb.api.itemdefns.RadioItemDefn
■単一選択(メニュー)の定義インターフェース
jp.co.dreamarts.hibiki.smartdb.api.itemdefns.SelectItemDefn
公開 API:設定ファイル(XML形式)の情報を取得するAPIを追加
Ver.4.1.0 SDB-2155
概要
これまでSm@rtDBの設定ファイル(default.xml、hibiki.xml)の情報を取得する API が存在しなかったため、アドオンを開発する際、設定ファイル内の情報(メール送信先やcontextUrlなど)を取得するには、独自に実装をする必要がありました。 そこで、Sm@rtDBの設定ファイル(default.xml、hibiki.xml)の情報を取得する API を追加しました。 Sm@rtDBの設定ファイルだけでなく、アドオンで独自に使用するXML形式のファイルにも使用できます。 詳細は、JavaDoc を参照して下さい。
■SmartdbAPIの新規メソッド
HbkXmlConfig jp.co.dreamarts.hibiki.smartdb.api.SmartdbAPI.loadHbkXmlConfig(String filename)
XML形式の設定ファイルの内容をHbkXmlConfigオブジェクトとして取得する。
例えば、/etc/hibiki/custom/setting.xmlの内容はloadHbkXmlConfig("custom/setting.xml")で読み込む。
Sm@rtDB自身の設定ファイルhibiki.xmlやdefault.xmlもロードできます。
詳細は loadHibikibkXml() と loadDefaultXml() を参照してください。
パラメータ:
filename XML形式の設定ファイルの/etc/hibikiディレクトリからの相対パス、または絶対パス
戻り値:
指定XMLファイルの情報を格納するHbkXmlConfigオブジェクト
例外:
IOException - ファイルが存在しない、またはXML形式でない場合はIOExceptionになります。
■/etc/hibiki/hibiki.xmlを読込むメソッド
HbkXmlConfig jp.co.dreamarts.hibiki.smartdb.api.SmartdbAPI.loadHibikiXml() throws IOException
Sm@rtDB自身の設定ファイル"hibiki.xml"をHbkXmlConfigのオブジェクトとしてロードする。
loadHbkXmlConfig("hibiki.xml")と同等。
【使用例1】:メールの送信サーバのサーバ名とポート番号を取得する:
HbkXmlConfig config = api.loadHibikiXml();
String hostname = config.getString("mail.smtp.hostname");
int port = config.getInt("mail.smtp.port", 25);
【使用例2】:contextUrlを取得する:
HbkXmlConfig config = api.loadHibikiXml();
String contextUrl = config.getString("system.contextUrl", "http://localhost:8080/hibiki/");
戻り値:
hibiki.xmlの設定情報を格納するHbkXmlConfigオブジェクト
例外:
IOException - 既定ディレクトリにhibiki.xmlが存在しない、またはXML形式でない場合はIOExceptionになります。
■/etc/hibiki/default.xmlを読込むメソッド
HbkXmlConfig jp.co.dreamarts.hibiki.smartdb.api.SmartdbAPI.loadDefaultXml() throws IOException
Sm@rtDB自身の設定ファイルdefault.xmlをHbkXmlConfigのオブジェクトとしてロードする。
loadHbkXmlConfig("default.xml")と同等。
【使用例】:default.xmlの全ての設定を出力する:
HbkXmlConfig config = api.loadXml();
for (String name: config.getNames()) {
System.out.format("%s: %s\n", name, config.getString(name));
}
戻り値:
default.xmlの情報を格納するHbkXmlConfigオブジェクト
例外:
IOException - 既定ディレクトリにdefault.xmlが存在しない、またはXML形式でない場合はIOExceptionになります。
■APIFactoryの新規メソッド
HbkXmlConfig jp.co.dreamarts.hibiki.smartdb.api.APIFactory.loadHbkXmlConfig(String filename) throws IOException
XML形式の設定ファイルの内容をHbkXmlConfigオブジェクトとして取得する。
例えば、/etc/hibiki/custom/setting.xmlの内容はloadHbkXmlConfig("custom/setting.xml")で読み込む。
Sm@rtDB自身の設定ファイルhibiki.xmlやdefault.xmlもロードできる。
パラメータ:
filename Sm@rtDB設定ディレクトリの相対パス、または絶対パス
戻り値:
指定XMLファイルの情報を格納するHbkXmlConfigオブジェクト
例外:
IOException - ファイルが存在しない、またはXML形式でない場合はIOExceptionになります。
■XML設定ファイルの値を格納するためのインターフェース
jp.co.dreamarts.hibiki.api.common.HbkXmlConfig
仕様
1. 空白タグは無視される:つまり、<abc> <abc>は完全スキップされてしまう。
2. 値の前後の空白文字は省略される:つまり、<abc> 99 <abc>は<abc>99<abc>と全く同じである。
3. <property name="abc" value="1234">は<abc>123<abc>に解釈される
4. 設定値を取得するときに、XMLタグ名のドットつなぎで複合キーを使用する
5. 同一キーに対して複数値に対応している場合は、それぞれのXMLタグ名の後ろにインデックスに括弧で括る:「タグ名(インデックス)」。インデックスは0オリジン。
6. サポートする設定値のデータタイプは、String, int, long, booleanの四種です。
公開 API:特定部品のみを更新する オプション を追加
Ver.4.1.0 SDB-2172
概要
更新履歴を追加せず、特定の部品のみ値を更新する オプション を追加しました。 従来の「ChangeDocumentOptions」に「updateHistory」「itemIds」を追加しました。 「updateHistory=false」が使用できるのは「数値入力ボックス」部品のみです。 「数値入力ボックス」部品のみ更新履歴を作成しないという用途で使用できます。 更新履歴を作成しない場合は、文書基本情報(更新者、更新日時)も更新されません。
詳細は、JavaDoc を参照して下さい。
■文書保存時のオプションを格納するクラス
jp.co.dreamarts.hibiki.smartdb.api.ChangeDocumentOptions
公開 API:LoadDocumentOptions を渡せる loadDocument() を追加
Ver.4.1.0 SDB-2182
概要
文書ロード時のオプション(LoadDocumentOptions)を渡して、指定バインダの指定文書をメモリ上にロードするメソッド loadDocument() を追加しました。 詳細は、JavaDoc を参照して下さい。
APIDocument DocumentManager.loadDocument(long binderId, long recordId, LoadDocumentOptions options) throws Exception
指定バインダの指定文書をメモリにロードする。
DocumentManager dman = api.getDocumentManager();
LoadDocumentOptions options = dman.newLoadDocumentOptions().setDelFlag(DelFlag.DELETED).setWithBasicInfo(true);
APIDocument doc = dman.loadDocument(binderId, recordId, options);
optionsのdelFlagをDelFlag.DELETEDに設定すると削除された文書もロードできる。
文書データの一部をより高速にロードするオプションは、LoadDocumentOptionsを参照してください。
削除されていない文書のフルロードはloadDocument(long, long)を利用してください。
パラメータ:
binderId 文書の所属バインダID
recordId 文書番号
options LoadDocumentOptions
戻り値:
文書
例外:
Exception
APIDocument DocumentManager.loadDocument(String binderKey, long recordId, LoadDocumentOptions loadDocumentOptions) throws Exception
指定バインダの指定文書をメモリにロードする。
例:数値部品の値を2倍に修正する、更新履歴は残さない。とにかく高速に単一部品の値を更新する。
DocumentManager dman = api.getDocumentManager();
LoadDocumentOptions loadOptions = dman.newLoadDocumentOptions().setWithBasicInfo(false).setItemKeys(ImmutableList.of("number"));
//高速ロード
APIDocument doc = dman.loadDocument(binderKey, recordId, loadOptions);
doc.setNumber("number", 2 * doc.getNumber("number").intValue());
ChangeDoxcumentOptions saveOptions = dman.newChangeDocumentOptions().setUpdateHistory(false).setItemKeys("number");
//高速保存
dman.saveDocument(doc, saveOptions);
optionsのdelFlagをDelFlag.DELETEDに設定すると削除された文書もロードできる。
文書データの一部をより高速にロードするオプションは、LoadDocumentOptionsを参照してください。
削除されていない文書のフルロードはloadDocument(String, long)を利用してください。
パラメータ:
binderKey 文書の所属バインダKEY
recordId 文書番号
loadDocumentOptions LoadDocumentOptions
戻り値:
文書
例外:
Exception
公開 API:製品標準ボタンの表示/非表示が設定可能な画面に文書削除確認画面を追加
Ver.4.1.0 SDB-2186
概要
製品標準ボタンの表示/非表示が設定可能な画面として、文書削除確認画面を追加しました。 詳細は、JavaDoc を参照して下さい。
■jp.co.dreamarts.hibiki.smartdb.api.ButtonBar.InterfaceKey へ追加したキー
DOC_DELETE
文書削除確認画面
■jp.co.dreamarts.hibiki.smartdb.api.ButtonBar.ButtonKey へ追加したキー
DOC_DELETE_CLOSE_BUTTON
文書削除確認画面:閉じる
DOC_DELETE_CANCEL_BUTTON
文書削除確認画面:キャンセル
DOC_DELETE_DELETE_BUTTON
文書削除確認画面:削除
REST API Ver.2 を追加
Ver.4.1.0 SDB-2037,sdb-1713,sdb-1924
概要
REST API Ver.2 を追加しました。REST API Ver.1 も使用可能ですが、新たにアドオンを作る場合は、Ver.2 の使用を推奨します。 詳細は、RestDoc を参照して下さい。
特徴
- Ver.1で使用しているAPIはそのまま使用できます。
- JSON形式を完全にサポートしました。従来のXML形式よりもデータ転送と処理が容易になります。
- リクエストはJSON形式の他に、XML形式、form形式が利用可能です。レスポンスのデフォルト形式はJSON形式です。
- 数値型、boolean型の使用が可能になりました。
- レスポンスデータのルート要素に、データ型を表すデータ名がつくようになりました。
- Sm@rtDBの公開APIを組み立て、カスタムAPIとしてRestAPI化することが可能になりました。
REST API:Jersey をバージョンアップ
Ver.4.1.0 SDB-1711
概要
RESTful API を実現するために利用している Jersey を 1.12 から 2.26 へバージョンアップしました。
REST API:HTTP メソッドを改善
Ver.4.1.0 SDB-1714
概要
HTTP メソッド「PUT」「DELETE」を利用した際、一部ブラウザの制限により、リクエストのパラメータが正確に取得できないことがありました。また、「_method」パラメータを含む HTTP メソッド「POST」を代替手段として、「PUT」「DELETE」を利用した場合でも同様の事象が発生していました。 そこで、どちらのリクエストの場合でも、パラメータが正確に取得されるように改善を行いました。
REST API:エラーコードの統一とエラー時の処理を改善
Ver.4.1.0 SDB-2041
概要
これまで、REST API でエラーとなった場合、すべての異常を処理できておらず、一部の異常が漏れていました。 また、エラーメッセージが、HTMLとして返されていることで、エラー処理も煩雑になっていました。 そこで、REST API でエラーとなった際のエラーコードの統一を行いました。 また、リクエスト時の Accept の値に応じて、エラーメッセージの形式として、JSON、またはXMLとなるように改善しました。
■エラーコード
エラーコード | エラーメッセージ | 説明 |
---|---|---|
500 | Internal Server Error Rest | Resources の異常が発生する |
501 | Not Implemented Rest | Resources を実装しない |
401 | Unauthorized Rest | フィルタ中に認証が失敗する |
404 | Not Found | Rest Resources の提供がない |
400 | Bad Request | リクエストが正しくない |
405 | Method Not Allowed | 提供した Rest Resources の使い方が正しくない |
■エラーメッセージの形式
Acceptの値 | リクエスト | エラーメッセージフォーマット |
---|---|---|
application/json | rest/1 | JSON |
application/json | rest/2とrest/custom | JSON |
application/xml | rest/1 | XML |
application/xml | rest/2とrest/custom | XML |
なし | rest/1 | XML |
なし | rest/2とrest/custom | JSON |
REST API:業務開始のAPIを追加
Ver.4.1.0 SDB-1883
概要
これまで業務開始を行う場合、公開 API を利用する必要がありましたが、REST API でも業務開始が行えるようになりました。なお、REST API V2 以降で利用可能です。 詳細は、RestDoc を参照して下さい。
$.ajax({
url:'/hibiki/rest/2/processes/start',
type:'post',
dataType:'json',
data: {
csrfToken:'Kru86j8Qn8SIEogsKdz51/',
processNumber: 30,
title: "テスト03",
comment: "文書がある場合",
document: 16,
binder: 10039,
startGroupId:""
}
})
.done(function(result){
alert('業務プロセス開始成功');
})
.fail(function(){
alert('業務プロセス開始失敗');
});