• 検索結果がありません。

Rmenuフレームワーク

N/A
N/A
Protected

Academic year: 2021

シェア "Rmenuフレームワーク"

Copied!
14
0
0

読み込み中.... (全文を見る)

全文

(1)

ジェネレーティブプログラミングの世界

データマッピングフレームワーク

Rmenu

・特徴

プログラムから、データとプロセスを完全分離

・疑問

本当にデータとプロセスが完全分離できるのか?

どんな仕組みで業務システムが動くのか?

日本オフィスクリエイション株式会社 下地忠史

2014年2月15日

(2)

Agenda

1.アプリケーションの基本

2.

Jsonの特徴を利用した項目移送

3.アプリケーションのデータフロー

4.アプリケーションの階層と役割

5.Rmenu アーキテクチャ

5.1

Webアプリケーション アーキテクチャ

5.2 帳票アプリケーション アーキテクチャ

5.3 並列分散バッチ アーキテクチャ

6.帳票作成例

6.1 帳票レイアウト作成

6.2 テンプレートPDF

6.3 作成するJson

6.4 出力PDF

(3)

アプリケーションの基本

・画面(ブラウザ)で入力したデータをDBに格納する。 ・DBから取得したデータを画面・帳票に出力する。

ポイント

・最初にデータに着目し、データフローを考える。

(4)

Ruby each命令による項目移送

inputRecord.each {|name,

value|

if outputRecord[name]

outputRecord[name] = value

end

}

Javascript for命令による項目移送

for (name in inputRecord) {

if (name in outputRecord) {

outputRecord[name]

= inputRecord[name];

}

}

2.

Jsonの特徴を利用した項目移送

Jsonはプログラム内に読み込まれるとハッシュオブジェクトに変換されます。

ハッシュオブジェクトを使用すると、項目名称が不明でも項目移送が可能です。

SQL実行後の結果セットもハッシュオブジェクトを使用しています。

Jsonの項目名(Key)には日本語が使用可能です。 項目名に日本語を使用することで、格段に可読性が向上します。

(5)

クライアント

サーバ

Json作成手順 1.画面・帳票からリクエストデータ・レスポンスデータ(トランザクション)を洗い出す。(全トランザクション) 2.アクセスするテーブルの視点から、リクエストデータ・レスポンスデータをグルーピング(IDを付与)する。 3.全データの項目名称をグルーピングしてデータセットJsonに定義する 4.リクエストJson・レスポンスJsonに項目名称を定義する。 5.リクエストJson・レスポンスJsonとセットでSQLJsonを定義する。(テーブル名・CRUDの種類・入出力項目名称等) データセットjson リクエストjson レスポンスjson ブラウザ (HTML5) リクエストjson レスポンスjson SQLjson DB

(6)

4.アプリケーションの階層と役割

アプリケーション

プログラム

Json

(外部DSL)

Rmenu

フレームワーク

・Jsonに記述されたデータに従ったプログラミング ・ブラウザ側(JavaScript) ・ ・ ・SMVCモデル Spec(内部DSL)の定義に従ったコールバック関数を作成 ・サーバ側(Ruby)・ ・ ・MVC2モデル Before・Afterパターンに従った関数を作成 ・自動項目移送を可能にするための簡単な定義言語 項目名称を定義 SQL情報を定義 帳票の位置情報等を定義 ・自動項目移送(Hash) ・SQL発行(Sequel) ・ Ajax通信(Json) ・オブジェクト通信(dRuby) ・並列分散処理(Rinda) ・ PDF作成(Prawn)

(7)

5.1

Webアプリケーション アーキテクチャ

クライアント

Webサーバ APサーバ

DBサーバ

ブラウザ (HTML) JQuery JQueryMobile BootStrap コントローラ イベント処理 モデル dataset.json validation.json request.json response.json ビュー 表示処理 ア パ ツ チ ・ パ ッ セ ン ジ ャ | R A C K コントローラ (dRuby) validation.json controller.rb モデル (dRuby) sql.json model.rb ビュー (dRuby) response.json view.rb

DB

クライアント

Json

サーバ

index.html xxx.appspec.js(トラン定義・イベント定義) xxx.controller.js(イベント処理) xxx.model.js(データ処理・通信処理) xxx.view.js(表示処理) xxx_validation.json xxx_mode_request.json xxx_mode_response.json xxx_mode_sql.json xxx_controller.rb(リクエストデータチェック) xxx_model.rb(sql編集・データ処理) xxx_view.rb(レスポンスデータ編集) ※ xxx ・・・画面名称 mode ・・・機能名 App仕様 Json定義 イベント定義 リクエストjson レスポンスjson リクエストjson レスポンスjson リクエストjson SQLjson レスポンスjson リクエストjson SQLjson SQL 実行結果 ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ⑨

(8)

5.2 帳票アプリケーション アーキテクチャ

APサーバ

DBサーバ

プリントサーバ

テンプレート 作成

コントローラ (dRuby) validation.json controller.rb プリント コントローラ (dRuby)

DB

モデル sql.json model.rb ビュー response.json view.rb PDFクリエイタ (Prawn) form.rb モデル (dRuby) sql.json model.rb ビュー (dRuby) response.json view.rb LibreOffice Excel PDF テンプレート 作成帳票 (PDF) リクエストJson レスポンスJson (PDFファイル名) リクエストJson SQLJson printparam (SQLJson) printparam (リクエストJson) SQLJson SQL 実行結果 SQL 実行結果 レスポンス Json SQLJson レスポンスJson テンプレートPDF PDF出力 レスポンスJson(PDFファイル名) レスポンスJson (PDFファイル名) ① ② ③ ⑨ ⑧ ④ ⑤ ⑥ ⑦ ⑪ ⑫ ⑬ ⑭ ⑮ ⑯ ⑰ ⑱

(9)

5.3 並列分散バッチ アーキテクチャ

APサーバ

タプルスペース

分散バッチ

DBサーバ

バッチ起動 サーバ Tuple Space (Rinda) TupleServer job_id TupleClient job_id job_no Job管理 分割Job管理 KEYVALUE管理 Tuple サーバ Tuple クライアント モデル sql.json model.rb モデル (dRuby) sql.json model.rb 業務DB 管理DB write TupleServer take TupleServer write TupleClient take TupleClient ・Tupleサーバ 1 台 ・ Tupleクライアント n 台 ・ job_no(分割番号) 1~n Job名 keyvalue リクエスト レスポンス ① ② ③ ④ ⑥ ⑦ ⑨ ⑩ ⑪ ⑫ ⑬ ⑤ ⑭ ⑮

(10)

6.1 帳票レイアウト作成

LibreOffice・Excell等で

レイアウトを作成する。 (PDF出力が可能なソフト)

(11)

6.2 テンプレートPDF

LibreOfficeで作成したPDF。

テンプレートPDFに実データを オーバライドし帳票を作成する。

(12)

App サーバ

プリント サーバ

・リクエスト Json

作成する帳票のコントロールキーを取得する為の 入力データを設定する

・SQL Json

入力データを使ってコントロールキーを取得する。 今回の例では、ケアマネIDが複数件取得される

・レスポンス Json

作成されたPDFのファイル名(パス情報含む)が 設定される。最後にブラウザ側でPDFを出力する。

・リクエスト Json

ケアマネIDが1件、設定される。

・SQL Json

ケアマネIDを入力データとして、ケアマネの名称と、 ケアマネに所属するヘルパーの情報が取得される。

・レスポンス Json

帳票レイアウトに沿って、ケアマネとヘルパー情報の 項目が定義され、SQL.jsonのデータが設定される。 個々の項目に、PDFの位置情報が記述されている。

6.3 作成するJson

(13)

6.4 出力PDF

テンプレートPDFに実データを オーバライドし作成されたPDF。

(14)

参照

関連したドキュメント

を体現する世界市民の育成」の下、国連・国際機関職員、外交官、国際 NGO 職員等、

世界レベルでプラスチック廃棄物が問題となっている。世界におけるプラスチック生 産量の増加に従い、一次プラスチック廃棄物の発生量も 1950 年から

最終的な認定データおよび特性データは最終製品 / プロセス変更通知 (FPCN) に含まれます。この IPCN は、変 更実施から少なくとも 90

フロント リテイ リング、ジェネックス、親和建設、 SCREEN

Global sales of electric passenger vehicles – cars, vans and small trucks – and market share, indicated by a red line (right chart). Total light-duty vehicle

法制史研究の立場から古代法と近代法とを比較する場合には,幾多の特徴