nimbus (1.2.4) | 2018-01-25 20:02 |
nimbus-sample (1.2.4) | 2018-01-26 17:06 |
アプリケーション開発において、任意のオブジェクトを任意のフォーマットで任意の出力先に出力する必要があります。 Nimbusでは、このような要件を満たす出力サービスを提供します。
出力するという機能を具体化すると、「どこにどのように出力するか」ということでしょう。
「どのように出力するか」という機能を具体化すると、順序性とマッピングが考えられます。こういう順番で、この項目とこの項目を出力したいといった感じです。この機能を具象化したクラスがWritableRecordです。
ここで、任意のオブジェクトを出力するためには、任意のオブジェクトを入力として受け取って、 特定のフォーマットに従ったWritableRecordに変換する必要があります。この機能を抽象化したインタフェースがWritableRecordFactoryです。
次は、任意のオブジェクトからWritableRecordFactoryによってフォーマットされたWritableRecordを「どこに出力するか」となります。その機能を抽象化したインタフェースがMessageWriterです。
さらに、「どのように出力するか」と「どこに出力するか」をまとめて抽象化したインタフェースがCategoryです。
関連するパッケージは、以下です。
アプリケーション向けインタフェースWritableRecordFactoryを使った簡単なアプリケーションのサンプルを示します。
- import java.util.Date;
- import java.util.Map;
- import java.util.HashMap;
- import jp.ossc.nimbus.core.ServiceManagerFactory;
- import jp.ossc.nimbus.service.writer.WritableRecordFactory;
- // WritableRecordFactoryを取得
- WritableRecordFactory factory = (WritableRecordFactory)ServiceManagerFactory.getServiceObject("WritableRecordFactory");
- // 出力情報を生成する
- Map map = new HashMap();
- map.put("DATE", new Date());
- map.put("MESSAGE", "テストのメッセージです。");
- // 出力情報をフォーマットして、WritableRecordに変換する
- WritableRecord record = factory.createRecord(map);
- System.out.println(record);
実装サービスの一覧は以下のとおりです。
実装サービス | 実装概要 |
jp.ossc.nimbus.service.writer.WritableRecordFactoryService | java.util.MapからWritableRecordへのフォーマットをサポートする |
jp.ossc.nimbus.service.writer.PropertyWritableRecordFactoryService | POJOからWritableRecordへのフォーマットをサポートする |
jp.ossc.nimbus.service.writer.LogWritableRecordFactoryService | Loggerサービス専用の実装 |
アプリケーション向けインタフェースMessageWriterを使った簡単なアプリケーションのサンプルを示します。
- import java.util.Date;
- import java.util.Map;
- import java.util.HashMap;
- import jp.ossc.nimbus.core.ServiceManagerFactory;
- import jp.ossc.nimbus.service.writer.MessageWriter;
- import jp.ossc.nimbus.service.writer.WritableRecord;
- import jp.ossc.nimbus.service.writer.WritableRecordFactory;
- // WritableRecordFactoryを取得
- WritableRecordFactory factory = (WritableRecordFactory)ServiceManagerFactory.getServiceObject("WritableRecordFactory");
- // 出力情報を生成する
- Map map = new HashMap();
- map.put("DATE", new Date());
- map.put("MESSAGE", "テストのメッセージです。");
- // 出力情報をフォーマットして、WritableRecordに変換する
- WritableRecord record = factory.createRecord(map);
- // MessageWriterを取得
- MessageWriter writer = (MessageWriter)ServiceManagerFactory.getServiceObject("MessageWriter");
- // 出力する
- writer.write(record);
実装サービスの一覧は以下のとおりです。
アプリケーション向けインタフェースCategoryを使った簡単なアプリケーションのサンプルを示します。
- import java.util.Date;
- import java.util.Map;
- import java.util.HashMap;
- import jp.ossc.nimbus.core.ServiceManagerFactory;
- import jp.ossc.nimbus.service.writer.Category;
- // Categoryを取得
- Category category = (Category)ServiceManagerFactory.getServiceObject("Category");
- // 出力情報を生成する
- Map map = new HashMap();
- map.put("DATE", new Date());
- map.put("MESSAGE", "テストのメッセージです。");
- // 出力する
- category.write(map);
実装サービスの一覧は以下のとおりです。
実装サービス | 実装概要 |
jp.ossc.nimbus.service.writer.SimpleCategoryService | サービス定義で指定されたWritableRecordFactoryとMessageWriterを使って出力する。 |
jp.ossc.nimbus.service.writer.EvaluateCategoryService | サービス定義で指定された条件に応じてCategoryを振り分けて出力する。 |
jp.ossc.nimbus.service.writer.GroupCategoryService | サービス定義で指定された複数のCategoryに出力する。 |
jp.ossc.nimbus.service.writer.DistributedCategoryService | サービス定義で指定された複数のCategoryに分散して出力する。 |
jp.ossc.nimbus.service.log.SimpleCategoryService | サービス定義で指定されたWritableRecordFactoryとMessageWriterを使って出力する。Loggerサービス専用の実装 |
jp.ossc.nimbus.service.log.GroupCategoryService | サービス定義で指定された複数のCategoryに出力する。Loggerサービス専用の実装 |
サンプルは、以下。