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('業務プロセス開始失敗');
});