intra-mart WebPlatform/AppFramework



Similar documents
プログラミングガイド

3

intra-mart WebPlatform/AppFramework

目 次 1. Web メールのご 利 用 について Web メール 画 面 のフロー 図 Web メールへのアクセス ログイン 画 面 ログイン 後 (メール 一 覧 画 面 ) 画 面 共 通 項 目

Microsoft Word - class_specification_guide_v60.doc

変更履歴 変更年月日 変更内容 2007/07/31 初版 2007/08/31 第二版 つの Web アプリケーションモデル を修正 1.6 intra-mart のアプリケーション開発概要 を修正 2.3 データベースからデータを取得する を修正 2009/03/27 第三版 3.1

4.5. < 参 加 表 明 書 を 提 出 する> 調 達 案 件 一 覧 の 表 示 対 象 となる 案 件 を 検 索 し 調 達 案 件 一 覧 に 表 示 させます 参 加 したい 案 件 の 調 達 案 件 名 称 行 - 入 札 参 加 資 格 確 認 申 請 / 技 術 資 料 /

メール 受 信 画 面 のレイアウトを 変 更 することができます ここでは 初 期 設 定 のレイアウトで 表 示 されているボタ ンやマークについて 解 説 します メール 一 覧 画 面 には 受 信 したメールが 一 覧 表 示 されます メール 受 信 タブをクリックすると 受 信 箱 フ

(Microsoft PowerPoint - Ver12\203o\201[\203W\203\207\203\223\203A\203b\203v\216\221\227\277.ppt)

<4D F736F F D20819C486F70658F6F93588ED297708AC7979D89E696CA837D836A B E A2E646F63>

技術報告会原稿フォーマット

機 能 概 要 概 要 平 成 24 年 度 シームレスな 地 域 連 携 医 療 の 実 現 実 証 事 業 に 対 応 するため 地 域 連 携 システム( 能 登 北 部 版 )を 構 築 する 機 能 < 機 能 追 加 変 更 一 覧 > 1. 画 像 連 携 機 能 院 内 で 撮 影

■デザイン

POWER EGG V2.01 ユーザーズマニュアル ファイル管理編

Microsoft Word - Active.doc

3. システム 要 件 IM- 社 内 便 Ver.7.2 は 以 下 の 製 品 上 で 動 作 します サーバ 要 件 Windows Server 2003 R2 Windows Server 2008 Windows Server 2008 R2 Red Hat Enterprise Lin

3

ez_meishi.ppt

■コンテンツ

C.1 共 有 フォルダ 接 続 操 作 の 概 要 アクセスが 許 可 されている 研 究 データ 交 換 システムの 個 人 用 共 有 フォルダまたは メーリングリストの 共 有 フォルダに 接 続 して フォルダを 作 成 したり ファイル をアップロードまたはダウンロードしたりすることがで

TIPS - 棚 割 りを 開 始 するまで Liteを 起 動 し 企 業 情 報 の 追 加 を 行 い 棚 割 を 行 う 企 業 の 追 加 をして 下 さい 企 業 情 報 の 追 加 時 に エラーメッセージが 表 示 された 場 合 別 途 TIPS トラブルが 発 生 した 場 合

5-2.操作説明書(支店連携)_xlsx

WebMail ユーザーズガイド

スライド 1

4 応 募 者 向 けメニュー 画 面 が 表 示 されます 応 募 者 向 けメニュー 画 面 で [ 交 付 内 定 時 の 手 続 を 行 う] [ 交 付 決 定 後 の 手 続 を 行 う]をクリックします 10

目 次. WEB メールへのログイン.... メール 送 信 手 順.... メール 受 信 手 順 アドレス 帳 の 操 作 手 順 フォルダーの 操 作 手 順 メール 発 信 者 登 録 署 名 登 録 手 順 基 本 的 な 設 定

電子申告直前研修会(所得税編)

V-CUBE One

購買ポータルサイトyOASIS簡易説明書 b

Microsoft Word - サンプル _データベースアクセス_.doc

目 次 利 用 に 際 しての 注 意 事 項... ユーザー 登 録... ログイン... 課 題 申 請... 5 装 置 予 約... 6 ライセンス 取 得 方 法... 7 利 用 料 金 の 確 認 ( 準 備 中 ) 外 部 発 表 登 録 の 方 法... 5 < 附

PowerPoint Presentation

GRIDY SFA カスタム 項 目 操 作 ガイド 用 本 書 はに 必 要 な 操 作 を 解 説 しております は GRIDY SFA ののことです GRIDY SFA へ 申 し 込 み 最 初 に 登 録 を 行 った 方 がそのままとなります カスタム 項 目 はの 方 のみ 操 作 可

■ユーザ

文書管理

振込データの作成

1. 目 次 1. 目 次 2.はじめに 2-1.メールテンプレート 編 集 機 能 とは? 2-2. 対 象 読 者 3. 用 語 一 覧 4. 利 用 の 流 れ 4-1.メールテンプレート 編 集 の 流 れ 5. 機 能 説 明 利 用 方 法 5-1.テキストメール 編 集 開 封 率 を

研究者情報データベース

スライド 1

PowerPoint プレゼンテーション

5-2 一 般 ユーザー 用 :メール 2 送 信 者 のリンクをクリックすると 受 信 メールの 内 容 を 見 ることができます 受 信 メール 内 容 画 面 項 目 送 信 者 宛 先 CC 本 文 (テキスト) 本 文 (HTML) メールアドレスのリンクをクリックするとアドレス 帳 へ

Microsoft PowerPoint - c3_op-manual.pdf

「1 所得税及び復興特別所得税の確定申告書データをお持ちの方」からの更正の請求書・修正申告書作成編

■ディレクトリ

決 算 時 の 流 れ-1 1 年 間 の 仕 訳 入 力 が 終 了 したら 以 下 の 手 順 で 決 算 書 を 作 成 します Step1 精 算 表 を 印 刷 する 1.[F2 入 力 ]タブより 合 計 表 を 選 択 し 月 度 の 指 定 で 期 首 ~12ヶ 月 目 を 指 定

DN6(R04).vin

はじめに ~アイコン 説 明 1.TOP 画 面 2.カメラTOP 切 替 会 社 選 択 画 面 へ 遷 移 + カメラアプリの 新 規 フォルダーを 作 成 編 集 カメラアプリのフォルダーを 編 集 更 新 設 定 の 変 更 が 反 映 されない 場 合 更 新 をしてください メニュー カ

R4財務対応障害一覧

KINGSOFT Office 2016 動 作 環 境 対 応 日 本 語 版 版 共 通 利 用 上 記 動 作 以 上 以 上 空 容 量 以 上 他 接 続 環 境 推 奨 必 要 2

1-1 一覧画面からの印刷

スライド 1

操 作 の 手 順 : 個 人 住 民 税 一 括 納 付 / 新 規 依 頼 修 正 複 写 個 人 住 民 税 一 括 納 付 メニュー 個 人 住 民 税 一 括 納 付 新 規 依 頼 修 正 複 写 依 頼 / 委 託 者 情 報 入 力 (P100) 依 頼 修 正 / 委 託 者 情

目 次 目 次 1 ログイン ログアウト ログインする...1 ログイン 画 面 が 表 示 されないときは?... 1 初 めてログインするときのパスワードは?... 2 初 期 パスワードを 忘 れてしまったときは?... 2 変 更 したパスワードを 忘 れてしまったときは?.

付 録 B Wiki を 閲 覧 編 集 する B.1 Wiki を 閲 覧 する Web ブラウザのアドレス 欄 に 公 開 されている 個 人 用 Wiki の URL またはメーリ ングリストの Wiki の URL を 入 力 すると その Wiki を 閲 覧 編 集 することができ ます

PowerPoint プレゼンテーション

<4D F736F F D F B B838082F090DD927582B782E995FB96405F E646F6378>

「給与・年金の方」からの確定申告書作成編

Microsoft PowerPoint _リビジョンアップ案内_最終.pptx

<4D F736F F D20819C B78AFA95DB91538C7689E68DEC90AC289

データベースS 演習資料

贈与税 faq

01_07_01 データのインポート_エクスポート_1

迷惑メールフィルタリングコントロールパネル利用者マニュアル

スライド 1

1. 概 要 Webで 申 込 みした 手 続 きの 内 容 とNEXIでの 手 続 状 況 を Web 申 込 状 況 一 覧 で 確 認 することができます また 各 種 手 続 きにおいて 申 込 みを 完 了 せずに 保 存 状 態 にした 手 続 きを この 一 覧 から 再 開 すること

前 書 き 広 域 機 関 システム System for Organization for Cross-regional Coordination of Transmission Operators(OCCTO) rev: 商 標 類 Windows Office Excel

研究者総覧システム

12_02_02 帳票設定5

目 次 電 子 申 請 を 使 用 した 申 請 の 流 れ 1ページ 申 請 書 ( 概 算 保 険 料 申 告 書 )の 作 成 2ページ 作 成 した 申 請 書 の 送 信 31ページ 状 況 照 会 電 子 納 付 を 行 う 62ページ 返 送 書 類 の 取 得 75ページ お 問 い

Microsoft Word - FrontMatter.doc

Ver 改 訂 日 付 改 訂 内 容 1

PowerPoint プレゼンテーション

目 次 遺 失 物 管 理 プログラム 利 用 者 マニュアル 1. 動 作 条 件 遺 失 物 管 理 プログラムのインストール 運 用 の 流 れ 起 動 方 法 操 作 方 法 について 基 本 的 な 操

Microsoft Word - Start Up Guide1 .docx

2 科 学 研 究 費 助 成 事 業 のトップページ 画 面 が 表 示 されます [ 研 究 者 ログイン]をクリック します 掲 載 している 画 面 は 例 示 です 随 時 変 更 されます 3 科 研 費 電 子 申 請 システムの 応 募 者 ログイン 画 面 が 表 示 されます e

スライド 1

第1章 情報処理センターの利用

5 振 込 依 頼 書 の 作 成 方 法 ()ツールの 起 動 コピーまたはダウンロードしたツールをダブルクリックして 開 いてください (ツール 起 動 の 際 マクロを 有 効 にしてください ) ダブルクリック 後 以 下 のメッセージが 出 力 されますので 読 み 取 り 専 用 ボタン

1.2. ご 利 用 環 境 推 奨 ブラウザ Internet Explorer Google Chrome(バージョン 32 時 点 で 動 作 確 認 済 み) Mozilla Firefox(バージョン 26 時 点 で 動 作 確 認 済 み) Safari 7

目 次 1. 大 学 情 報 データベースシステムの 使 用 方 法 について EXCEL 一 括 登 録 EXCEL ダウンロード 検 索 条 件 の 指 定 プレビュー EXCEL ダウンロード(データ 抽 出 あ

ことばを覚える

Microsoft Word - 311Tools_END

Gmail 利用者ガイド

SXF 仕 様 実 装 規 約 版 ( 幾 何 検 定 編 ) 新 旧 対 照 表 2013/3/26 文 言 変 更 p.12(1. 基 本 事 項 ) (5)SXF 入 出 力 バージョン Ver.2 形 式 と Ver.3.0 形 式 および Ver.3.1 形 式 の 入 出 力 機 能 を

MovableType 更新作業マニュアル

設定フロー ★印は必須の設定です


1

目 次 必 ずお 読 みください 接 続 方 法 WEB ブラウザ 操 作 方 法 閲 覧 用 PC で 直 接 ZERO 本 体 と 接 続 する 場 合 各 ページについて 発 電 状 況 画 面 表 示... 3

So-Cool CART マニュアル

請 求 データを 作 成 しましょう 操 作 手 順 1 トップページ 画 面 で [ 口 座 振 替 請 求 ]をクリックして 口 座 振 替 請 求 サービスのメインメニュー 画 面 を 表 示 し [ 請 求 データ 作 成 ]をクリックします 請 求 データは 最 大 10 個 作 成 する

1.3. アドインボタンの 場 所 2007 / 2010 / 2013 / 2016 の 各 バージョンのアプリケーションにおいては アドインボタン はリボン 名 アンテナハウス に 登 録 されます アドインボタンの 表 示 状 態 (Word 2010 の 例 ) アドインボタンの 表 示 状

あいち電子調達共同システム

目 次 機 能 概 要 配 信 管 理 1. メールの 配 信 履 歴 と 予 約 を 確 認 する

変 更 履 歴 日 付 Document ver. 変 更 箇 所 変 更 内 容 2015/3/ 新 規 追 加 2015/9/24 誤 字 修 正 2016/2/ 動 作 環 境 最 新 のものへ 変 更 全 体 オペレーター の 表 記 を 削 除 2016/5/

改 定 履 歴 改 訂 日 改 訂 理 由 及 び 内 容 承 認 者 確 認 者 改 訂 者 05/8/7 新 版 発 行 05/0/5 推 奨 動 作 環 境 を 追 記

タイトル位置

学 校 紹 介 ページ 公 開 までの 流 れ 2 管 理 画 面 よりログイン お 知 らせいたしますID PASSにて 管 理 画 面 よりログインします さんぽう 進 学 ネットモバイル 看 護 医 療 進 学 ネット のIDにつきましては 2010 年 度 用 と2011 年 度 用 とで

PATENTBOY/Netバージョンアップ説明書(Ver.1.92)

おすすめページ

Transcription:

intra-mart WebPlatform/AppFramework Ver.7.2 スクリプト 開 発 モデル プログラミングガイド 2011/09/30 第 3 版

<< 変 更 履 歴 >> 変 更 年 月 日 変 更 内 容 2010/04/01 初 版 2011/01/31 第 2 版 3.4.3.1 Imart.defineType 関 数 の 記 述 を 修 正 しました 2011/09/30 第 3 版 3.11.1 自 動 コンパイル の 記 述 を 修 正 しました 3.19 ツリー 表 示 unit の 記 述 を 修 正 しました

目 次 << 目 次 >> 1 イントロダクション...1 1.1 スクリプト 開 発 モデルでの 開 発 概 要...1 1.1.1 プレゼンテーション ページ...1 1.1.2 ファンクション コンテナ...2 1.2 各 ファイルの 保 存 場 所...3 2 スクリプト 開 発 モデルのプログラミング...5 2.1 Hello Worldを 作 ろう...5 2.1.1 ベースとなるプレゼンテーション ページ(.html)の 作 成...5 2.1.2 ファンクション コンテナ(.js)の 作 成...7 2.1.3 アプリケーション プログラムの 実 行...7 2.2 ページ 間 にまたがるデータの 共 有...8 2.2.1 ベースとなるプレゼンテーション ページ(.html)の 作 成...8 2.2.2 ファンクション コンテナ(.js)の 作 成...9 2.2.3 アプリケーション プログラムの 実 行...10 2.3 データベースからデータを 取 得 する...13 2.3.1 ベースとなるプレゼンテーション ページ(.html)の 作 成...13 2.3.2 ファンクション コンテナ(.js)の 作 成...14 2.3.3 アプリケーションの 実 行...15 2.4 取 得 したデータの 一 覧 表 示...16 2.4.1 ベースとなるプレゼンテーション ページ(.html)への 追 加...16 2.4.2 ファンクション コンテナ(.js)の 作 成...16 2.4.3 アプリケーションの 実 行...17 2.5 データの 登 録 更 新 削 除...19 2.5.1 ベースとなるプレゼンテーション ページ(.html)の 作 成...19 2.5.2 ファンクション コンテナ(.js)の 作 成...20 2.5.3 アプリケーションの 実 行...21 3 Javaコンポーネント 群 (im-bizapi)の 利 用...23 3.1 画 面 共 通 モジュール...23 3.1.1 画 面 デザイン 共 通 モジュール...23 3.1.2 標 準 画 面 の 作 り 方 ( 共 通 画 面 デザイン)...25 3.2 Storage Serviceの 利 用 方 法...26 3.2.1 ファイル アップロード...26 3.2.2 ファイルリストの 表 示...28 3.2.3 ファイル ダウンロード...30 3.2.4 ファイルの 削 除...32 3.3 メール 連 携 モジュール(ファンクション コンテナ)...35 3.3.1 メール 送 信...35 3.3.2 添 付 ファイル 付 きメールの 送 信...38 3.4 共 通 ライブラリの 作 成...41 3.4.1 拡 張 APIの 作 成...41 3.4.2 グローバル 関 数 の 作 成...45 3.4.3 拡 張 <IMART>タグの 作 成...48 3.5 外 部 プロセスの 呼 び 出 し...51 3.6 JavaClassとの 連 携...52 3.6.1 標 準 JavaClassとの 連 携 方 法...52 3.7 EJBとの 連 携...56 作 成 者 : 株 式 会 社 NTT データ イントラマート Page i

intra-mart スクリプト 開 発 モデル プログラミングガイド 3.7.1 EJBコンポーネントの 作 成... 56 3.7.2 JavaScriptからの 呼 び 出 し... 56 3.8 XML 形 式 のデータを 扱 う... 57 3.8.1 XMLパーサーとデータの 取 得... 57 3.8.2 XML 形 式 データの 受 信 方 法... 57 3.8.3 XML 形 式 データの 送 信 方 法... 59 3.9 E4Xの 利 用 方 法... 62 3.9.1 E4Xとは?... 62 3.9.2 XMLオブジェクトの 作 成... 62 3.9.3 値 の 取 得... 62 3.9.4 子 ノードの 取 得... 63 3.9.5 ノードの 追 加... 63 3.9.6 ノードの 削 除... 63 3.9.7 変 数 の 挿 入... 64 3.10 JSSP-RPCについて... 65 3.10.1 動 作 イメージ... 65 3.10.2 JSSP-RPC 通 信 エラーオブジェクトに 関 して... 65 3.10.3 JSSP-RPC サンプルプログラム( 同 期 通 信 )... 66 3.10.4 JSSP-RPC サンプルプログラム( 非 同 期 通 信 )... 67 3.11 JavaScriptコンパイラ 機 能 について... 69 3.11.1 自 動 コンパイル... 69 3.11.2 手 動 コンパイル... 72 3.11.3 実 行 時 のファンクション コンテナ 検 索 手 順... 75 3.11.4 仕 様 詳 細... 75 3.11.5 コンパイラとは 直 接 関 係 ない 部 分 の 仕 様... 76 3.11.6 制 約... 76 3.12 im-javaee Frameworkとの 連 携... 79 3.13 グラフ 描 画 モジュール... 80 3.14 アクセスコントローラモジュール... 82 3.15 ショートカットアクセス 機 能... 83 3.16 外 部 ライブラリコール... 85 3.16.1 概 要... 85 3.16.2 外 部 ライブラリコールのアーキテクチャ... 85 3.16.3 Javaラッパークラスと 外 部 ライブラリの 作 成... 85 3.16.4 外 部 ライブラリコールの 方 法... 88 3.17 バッチ 管 理 モジュール... 89 3.17.1 プログラムの 作 成... 89 3.17.2 システム 構 成... 89 3.17.3 バッチの 登 録 と 設 定... 89 3.18 カレンダーunit... 90 3.18.1 呼 び 出 し 方 法... 90 3.18.2 カレンダーデータの 受 け 取 り 方 法... 90 3.18.3 カレンダー 拡 張 タグ と カレンダーモジュール... 91 3.19 ツリー 表 示 unit... 94 3.19.1 機 能 概 要... 94 3.19.2 API 仕 様... 94 3.19.3 表 示 アイコン 解 説... 95 Page ii Copyright 2000-2011 株 式 会 社 NTT データ イントラマート All rights Reserved.

目 次 3.19.4 用 語 および 操 作 解 説...95 3.19.5 プログラミング 時 の 注 意 事 項...96 3.19.6 プログラム 例...96 3.19.7 制 限 事 項...97 3.20 アプリケーション ロック 機 能...99 3.21 一 意 情 報 の 取 得 機 能...101 3.22 製 品 のカスタマイズ...102 3.22.1 規 定...102 3.22.2 環 境 移 行 の 手 順...102 3.22.3 注 意 事 項...102 3.23 アクセスセキュリティモジュールを 利 用 しないで 画 面 を 構 築 する 方 法...103 3.23.1 概 要...103 3.23.2 準 備 (インストール)...103 3.23.3 作 成 (スクリプト 開 発 モデル)...103 3.23.4 注 意 事 項...104 3.24 検 索 ストリーミング 機 能...105 3.25 データベースのストアドプロシージャの 呼 び 出 し...106 3.26 国 際 化 対 応...107 4 デバッグ...109 4.1 デバッグ 手 順...109 4.1.1 デバッグ 例...109 4.1.2 デバッグAPIの 利 用 方 法...110 4.2 単 体 テスト 環 境 (im-jsunit)...113 4.2.1 im-jsunit 概 要...113 4.2.2 テストケースの 実 行 順 序...114 4.2.3 テストケースの 作 成...115 4.2.4 テストランチャーの 作 成...117 4.2.5 単 体 テストの 実 行...117 5 サンプルプログラムの 実 行...118 5.1 サンプルのインストール...118 5.2 メニューのサンプル 実 行...119 5.3 APIリスト...120 6 Appendix...121 6.1 メッセージ 設 定...121 6.2 予 約 語 一 覧...121 6.3 制 限 事 項...121 6.3.1 ファイル 名 称...121 6.3.2 ID コード...121 6.3.3 JavaScript 関 数...121 6.4 スクリプト 開 発 モデルの 実 行 処 理 シーケンスについて...122 6.4.1 ファンクションコンテナの 種 類...123 作 成 者 : 株 式 会 社 NTT データ イントラマート Page iii

1 イントロダクション 1 イントロダクション 1.1 スクリプト 開 発 モデルでの 開 発 概 要 intra-mart WebPlatform/AppFramework を 使 ったアプリケーションの 開 発 において 開 発 者 はブラウザ 上 に 表 示 するコンテンツと サーバ 上 で 動 作 するビジネスロジックを 作 成 することになります スクリプト 開 発 モデルではプレゼンテーション ページ(HTML ファイル)とファンクション コンテナ(サーバサイド JavaScript ファイル)の 2 つのファイルを 作 成 します HTML と Java スクリプトで 開 発 を 行 えるため ホームページ 作 成 の 延 長 で データベースと 連 動 した 本 格 的 な Web システムの 開 発 が 可 能 になります intra-mart WebPlatform/AppFramework に 用 意 されているモジュール 群 を 活 用 することで さらに 生 産 性 を 向 上 させることが できます 1.1.1 プレゼンテーション ページ プレゼンテーション ページは ユーザインタフェース 部 分 に 相 当 します 拡 張 子 は.html です 開 発 者 は intra-mart ebuilder または 任 意 のエディタを 利 用 して ブラウザに 表 示 するコンテンツを 作 成 していきます ( 動 画 像 やサウンドなどを 盛 り 込 んだマルチメディアリッチな 画 面 を 構 築 していくことも 可 能 です) ホームページ 作 成 ツールから 生 成 される HTML ファイルに<IMART>タグを 追 加 していくことで ファンクション コンテナの 実 行 結 果 を 関 連 付 けることが 可 能 になります ユーザ 定 義 関 数 を 呼 び 出 す<IMART> 拡 張 タグを 追 加 することもできます さらに プレゼンテーション ページは HTML ファイルであるため ユーザインタフェース 部 分 のみを 切 り 出 してホ ームページデザイナに 作 業 を 依 頼 するなど Web システム 開 発 の 分 業 を 行 うことが 可 能 です <HTML> <TR> <TD> <IMART name> </TD> <TD> <IMART name> </TD> <TD> <IMART name> </TD> </TR> 画 面 共 通 モ ジュー ル 帳 票 印 刷 ワークフロ ー アクセスセ キュリ ティ グラフ 描 画 メール 連 帯 SQL 文 1 2 市 販 のホームページ 作 成 ツールや intra-mart ebuilder を 利 用 してユーザインタフェースとなるプ レゼンテーション ページのひな 型 を 作 成 します ホームページ 作 成 ツールから 自 動 生 成 された HTML ソースに ファンクション コンテナ 中 の JavaScript 関 数 や intra-mart WebPlatform のオブジェクトと 連 携 する<IMART>タグを intra-mart 作 成 者 : 株 式 会 社 NTT データ イントラマート Page 1

intra-mart スクリプト 開 発 モデル プログラミングガイド ebuilder やテキストエディタを 使 い 挿 入 ( 記 述 )します プレゼンテーション ページのサンプル 例 を 示 します intra-mart の 独 自 拡 張 タグ<IMART>を 利 用 して 各 種 モジュールを 呼 び 出 していきます intra-mart の 独 自 拡 張 タグ<IMART>を 利 用 して 各 種 モジュールを 呼 び 出 していきま す 1.1.2 ファンクション コンテナ ファンクション コンテナは サーバ 上 で 稼 動 するビジネスロジック 部 分 に 相 当 します 拡 張 子 は.js です ファンク ション コンテナとプレゼンテーション ページはワンセットとなっているため ファイルラベル 名 は 同 一 のものを 使 用 します 開 発 者 は intra-mart WebPlatform/AppFramework で 用 意 されているモジュール 郡 から 必 要 なオブジェク トや 関 数 を 選 び 出 し サーバサイドで 稼 動 するビジネスロジックを Java スクリプトで 作 成 していきます ( intra-mart ebuilder を 利 用 することで 生 産 性 が 向 上 します)データベースの SQL 文 もファンクション コンテナの 中 に 記 述 し ていきます データベースの 接 続 や SQL 発 行 は intra-mart WebPlatform/AppFramework のモジュールが 行 うた め 開 発 者 は 細 かなセッション 管 理 やトランザクション 管 理 を 意 識 する 必 要 はありません ビジネスロジックの 実 行 結 果 は プレゼンテーション ページの<IMART>タグによって 関 連 付 けられ ブラウザ 上 に 表 示 されます intra-mart WebPlatform/AppFramework で 用 意 されているモジュール 郡 の 詳 細 は API リスト に 記 述 されていま す このように スクリプト 開 発 モデルでは HTML と Java スクリプトで 開 発 を 行 えるため ホームページ 作 成 の 延 長 で データベースと 連 動 した 本 格 的 な Web システムの 開 発 が 可 能 になります Page 2 Copyright 2000-2011 株 式 会 社 NTT データイントラマート All rights Reserved.

1 イントロダクション 1.2 各 ファイルの 保 存 場 所 intra-mart WebPlatform/AppFramework の 各 ファイルの 保 存 場 所 を 示 します intra-mart WebPlatform(Resin)の 場 合 静 的 コンテンツ(HTML ファイルや 画 像 ファイルなど) Web サーバコネクタのインストールディレクトリ 以 下 (スタンドアロン 型 の 場 合 はサーバモジュールのインストールディレクトリ 直 下 doc/imart ディレクトリ 以 下 ) スクリプト 開 発 モデルのプログラム (プレゼンテーション ページ(.html), ファンクション コンテナ(.js)) ソースディレクトリ 以 下 ( 通 常 は %ResourceService%/pages/src/) Storage Service により 一 元 管 理 されるファイル 群 %Storage Service%/storage/ディレクトリ 内 intra-mart WebPlatform(JBoss)および intra-mart AppFramework の 場 合 静 的 コンテンツ(HTML ファイルや 画 像 ファイルなど) フレームワークサーバのインストールディレクトリ 直 下 doc/imart ディレクトリ 以 下 スクリプト 開 発 モデルのプログラム(プレゼンテーション ページ(.html), ファンクション コンテナ(.js)) ソースディレクトリ 以 下 ( 通 常 は %ResourceService%/pages/src/) Storage Service により 一 元 管 理 されるファイル 群 %Storage Service%/ storage/ディレクトリ 内 作 成 者 : 株 式 会 社 NTT データ イントラマート Page 3

2 スクリプト 開 発 モデルのプログラミング 2 スクリプト 開 発 モデルのプログラミング 2.1 HelloWorldを 作 ろう ここでは intra-mart のスクリプト 開 発 モデルを 用 い 簡 単 なアプリケーションを 作 成 する 作 業 を 通 して プレゼンテ ーション ページやファンクション コンテナの 作 成 の 実 際 について 理 解 を 深 めましょう ここでは 簡 単 な 例 としてブラウザからサーバ 上 に 作 成 したプレゼンテーション ページである hello.html を 起 動 さ せたとき サーバサイドの intra-mart WebPlatform と 連 携 して こんにちは イントラマートです とブラウザ 上 に 表 示 させるアプリケーションを 作 ります 2.1.1 ベースとなるプレゼンテーション ページ(.html)の 作 成 ブラウザ 上 に 表 示 させるためのプレゼンテーション ページを HTML 形 式 で 作 成 します HTML は intra-mart の ebuilder や 市 販 のホームページ 作 成 ツール エディタを 利 用 して 作 成 します ここでは 下 記 のように 画 面 上 に 文 字 列 を 表 示 するだけのシンプルな 静 的 HTML を 最 初 に 作 成 します ファイル 名 は hello.html とし 以 下 の 場 所 へ 保 存 してください %ResourceService%/pages/src/sample/user1 < 作 成 した hello.html ファイル > <HTML> <BODY> こんにちは intra-mart です </BODY> </HTML> 作 成 したファイルを 保 存 したら 次 の 手 順 でメニューの 登 録 を 行 います ( 以 降 はメニュー 登 録 の 手 順 を 省 略 しま す ) メニューの 登 録 1. ログイングループ 管 理 者 でログインする URL:http://intramart/imart/(ログイングループ ID).manager ID パスワードを 入 力 2. メニューの 設 定 を 行 う メニュー - ログイングループ 管 理 - メニュー 管 理 - メニュー 設 定 を 選 択 新 規 ページ をクリックし 以 下 の 設 定 を 行 う 表 示 名 : hello sample URL : sample/user1/hello.jssp 権 限 リスト - 追 加 -: UserSetting 作 成 者 : 株 式 会 社 NTT データ イントラマート Page 5

intra-mart スクリプト 開 発 モデル プログラミングガイド 3. 一 般 ユーザでログインする URL:http://intramart/imart/(ログイングループ ID).portal ID パスワードを 入 力 4. メニュー - hello sample を 選 択 すると 以 下 の 画 面 が 表 示 されます <hello.html の 実 行 画 面 > 作 成 した HTML ファイル 上 で ファンクション コンテナと 連 携 させたい 部 分 に<IMART>タグを 埋 め 込 み プレゼ ンテーション ページを 完 成 させます ここでは intra-mart の 部 分 を<IMART>タグにし ファンクション コンテ ナで 指 定 した 文 字 列 (namevalue の 値 )に 置 き 換 えるように 設 定 します <IMART タグを 埋 め 込 んで 修 正 した hello.html ファイル> <HTML> <BODY> こんにちは <IMART type="string" value=namevalue></imart>です </BODY> </HTML> 解 説 <IMART type="string"></imart> ここでは <IMART>タグの type 句 に string を 指 定 しています string は value 句 に 指 定 された 変 数 をファンクション コンテナ 中 の 値 に 置 き 換 えるための 属 性 です type 句 に 指 定 できる 属 性 には 他 にも link repeat form input select など プレゼンテーション ページとファンクション コン テナを 連 携 させるためのものが intra-mart WebPlatform により 多 数 用 意 されています intra-mart で 提 供 している<IMART>タグの 詳 細 は intra-mart WebPlatform に 付 属 している API リスト を 参 照 してく ださい Page 6 Copyright 2000-2011 株 式 会 社 NTT データイントラマート All rights Reserved.

2 スクリプト 開 発 モデルのプログラミング 2.1.2 ファンクション コンテナ(.js)の 作 成 作 成 したプレゼンテーション ページに 対 応 するファンクション コンテナを 作 成 します ファンクション コンテナに は 初 期 化 関 数 である init 関 数 を 作 成 します ここでは 文 字 列 イントラマート を namevalue という 名 前 のプロ パティに 設 定 します hello.html と 連 携 させるため ファイル 名 は hello.js とし プレゼンテーション ページと 同 じフ ォルダに 置 きます // HTML へ 渡 す 値 の 宣 言 var namevalue; < 作 成 したファンクション コンテナ(hello.js)> // init 関 数 の 定 義 function init(request){ namevalue = "イントラマート"; // HTML へ 渡 す 値 を 設 定 します ファンクション コンテナの 中 の 関 数 init()は intra-mart WebPlatform が 自 動 的 に 初 期 解 釈 する 固 定 関 数 で す 2.1.3 アプリケーション プログラムの 実 行 作 成 したプレゼンテーション ページとファンクション コンテナからなるアプリケーションを 実 行 すると 最 初 に 示 し たように こんにちは イントラマートです と 表 示 されます < 実 行 時 の 結 果 画 面 > 任 意 のディレクトリに 作 成 したアプリケーションを 実 行 するには ログイングループ 管 理 者 でログインし [ログイ ングループ 管 理 ]-[メニュー 管 理 ]-[メニュー 設 定 ]でアプリケーションのページ 登 録 をする 必 要 があります メニュー の 登 録 の 仕 方 は 2.1.1 ベースとなるプレゼンテーション ページ(.html)の 作 成 を 参 照 してください 作 成 者 : 株 式 会 社 NTT データ イントラマート Page 7

intra-mart スクリプト 開 発 モデル プログラミングガイド 2.2 ページ 間 にまたがるデータの 共 有 intra-mart を 利 用 すると 複 数 ページ 間 でのデータ 共 有 (セッション 管 理 )が 簡 単 に 行 えます ここでは プレゼンテーション ページからデータを 入 力 し ファンクション コンテナを 通 してサーバ 側 でデータを 保 存 別 のページにデータを 表 示 するというアプリケーションを 作 ってみます ここでは 名 前 を 入 力 するページ(input.html)を 新 しく 作 成 して そこで 取 得 したデータを 前 節 で 作 成 した hello.html に 表 示 させます 2.2.1 ベースとなるプレゼンテーション ページ(.html)の 作 成 基 本 となるプレゼンテーション ページを 作 成 します 拡 張 子 は.html に 限 定 されています 2.2.1.1 送 信 側 のHTMLファイルの 準 備 (input.html) 一 般 的 な Web ページと 同 じように<FORM>タグを 使 って データ 入 力 をする HTML ページを 最 初 に 作 成 します ファイル 名 を input.html とし %ResourceService%/pages/src/sample/user1 に 保 存 します < 送 信 フォーム input.html> <HTML> <BODY> 名 前 を 入 力 してください <BR> <FORM method="post"> <INPUT type="text" name="yourname"><br> <INPUT type="submit" value=" 送 信 "> </FORM> </BODY> </HTML> フォームの 送 信 ボタンが 押 されたときに ファンクション コンテナ 上 で 指 定 した 関 数 を 呼 び 出 すようにして フォー ムで 入 力 された 値 をファンクション コンテナ 側 で 参 照 できるようにします そのために ファンクション コンテナで 連 携 させる 必 要 のある<FORM>タグおよび <INPUT>タグを<IMART>タ グに 置 き 換 えます 完 成 した input.html ファイルを 保 存 します <ファンクション コンテナとの 連 携 用 送 信 フォーム HTML> <HTML> <BODY> 名 前 を 入 力 してください <BR> <IMART type="form" method="post" action="inputname" page="sample/user1/hello"> <IMART type="input" style="text" name="yourname"></imart><br> <IMART type="submit" value=" 送 信 "></IMART> </IMART> </BODY> </HTML> Page 8 Copyright 2000-2011 株 式 会 社 NTT データイントラマート All rights Reserved.

2 スクリプト 開 発 モデルのプログラミング 2.2.1.2 表 示 側 のHTMLファイルの 準 備 (hello.html) 作 成 した HTML ソースは 直 接 ブラウザでも 表 示 できますが ここでは 前 章 で 作 成 した hello.html からリンクをして input.html を 表 示 するようにしてみます hello.html に 次 の 行 を 追 加 してください <hello.html に 追 加 > <IMART type="link" page=" 保 存 フォルダ 名 /input"> 名 前 の 入 力 </IMART> 保 存 フォルダ 名 とは ここでは%ResourceService%/pages/src/sample/user1 を 指 しています <input.html 実 行 時 の 画 面 > 解 説 <IMART type="link"> ~ </IMART> このタグを 利 用 する 事 で intra-mart のセッションを 維 持 しながらプログラムを 動 作 させることができま す 詳 細 は API リスト を 参 照 してください 2.2.1.3 目 的 のHTMLソースへのパス intra-mart WebPlatform の Resource Service の 管 理 しているソースディレクトリ( 標 準 では %Resource Service%/pages/src/ ) からの 相 対 パスとなります また 拡 張 子 は 指 定 しません "./input" や " 保 存 フォルダ/input.html"という 記 述 をするとエラーになります 2.2.2 ファンクション コンテナ(.js)の 作 成 次 に JavaScript でファンクションコンテナファイルを 作 成 します 2.2.2.1 受 取 側 のJavaScriptファイルの 作 成 (input.js) <データ 受 け 取 り 保 存 する Java スクリプト> // inputname 関 数 の 定 義 function inputname(request) { // 受 け 取 った 値 を Client オブジェクトに 保 存 する Client.set( "namevalue", request.yourname ); 作 成 者 : 株 式 会 社 NTT データ イントラマート Page 9

intra-mart スクリプト 開 発 モデル プログラミングガイド 2.2.2.2 保 存 しておいたデータを 呼 び 出 すJavaScriptファイルの 作 成 (hello.js) 入 力 した 値 を 参 照 するように 前 節 で 作 成 した hello.js の 次 の 記 述 を 下 のように 書 き 換 えてみてください < 保 存 しておいたデータを 取 り 出 す 例 > namevalue = "イントラマート"; // HTML へ 渡 す 値 を 設 定 namevalue = Client.get( "namevalue" ); // HTML へ 渡 す 値 を 設 定 2.2.3 アプリケーション プログラムの 実 行 作 成 したプレゼンテーション ページとファンクション コンテナからなるアプリケーションを 実 行 すると 送 信 側 input.html で 入 力 して 送 信 したデータ ユーザ 1 が 受 信 側 hello.html に 表 示 されます < 送 信 側 input.html> < 受 信 側 hello.html> Page 10 Copyright 2000-2011 株 式 会 社 NTT データイントラマート All rights Reserved.

2 スクリプト 開 発 モデルのプログラミング 解 説 <IMART type="form"> ~ input.html の4 行 目 で 使 っている<IMART type="form">について もう 少 し 詳 しく 説 明 します <IMART type="form" method="post" action="inputname"page="sample/user1/hello"> この<IMART type="form">は intra-mart ファンクション コンテナにデータを 引 き 渡 すための <FORM>タグを 提 供 する 指 定 方 法 です action 属 性 には フォームのデータがサーバに 送 信 されたときに 呼 び 出 される ユーザ 定 義 関 数 名 を 指 定 します input.js を 見 ると サーバサイドのファンクション コンテナ 上 に 同 じ 名 前 の 関 数 が 定 義 され ています page 属 性 は フォームデータの 送 信 とサーバ 側 での 処 理 が 完 了 した 後 に 表 示 したいページを 指 定 で きます 省 略 した 場 合 は 現 在 のページを 再 描 画 します ここでも リンク 先 の 指 定 方 法 は Resource Service の 管 理 しているソースディレクトリ( 標 準 では% Resource Service%/pages/src)からの 相 対 パスになりますので 注 意 してください request オブジェクト データを 受 信 したファンクション コンテナでは request オブジェクトを 利 用 してプレゼンテーション ペ ージのデータを 参 照 できます request オブジェクトは intra-mart WebPlatform/AppFramework から 自 動 的 に 呼 び 出 される 関 数 (init()や<imart>タグの action 属 性 への 指 定 関 数 )の 引 数 として 受 け 取 る ことができます Client.set( "namevalue", request.yourname );プレゼンテーション ページからデータが 送 られると input.js の inputname 関 数 が 呼 び 出 されます ファンクション コンテナ 側 では request オブジェクトの プロパティ 名 として yourname(input.html では テキスト 入 力 フィールドに yourname という 名 前 を 付 けて いました)を 指 定 するだけで 簡 単 に 送 信 されてきたデータを 取 り 出 すことができます 作 成 者 : 株 式 会 社 NTT データ イントラマート Page 11

intra-mart スクリプト 開 発 モデル プログラミングガイド Client オブジェクトによるセッション 管 理 別 のページへ 移 動 した 後 もサーバ 側 でデータを 保 存 しておくために Client オブジェクトの set メソッド を 使 っています Client.set メソッドは クライアントの Web ブラウザが intra-mart で 作 成 したサーバアプリケーションに 接 続 している 間 データを 保 持 するように 指 示 するメソッドです 保 有 するデータには 名 称 を 付 けることが でき 複 数 保 存 することも 可 能 です この 例 では namevalue という 名 前 を 付 けて 保 存 しています intra-mart WebPlatform/AppFramework が 提 供 するオブジェクトには 他 にも 便 利 なメソッドやオブジェクトが 多 数 定 義 されています アプリケーションの 開 発 者 は これらのメソッドやモジュールを 利 用 することで 短 い 開 発 期 間 で 品 質 の 優 れたアプリケーションを 構 築 することが 可 能 になります 各 クライアント 情 報 の 保 持 時 間 の 制 限 (セッションタイムアウト 値 ) intra-mart では ここで 述 べたセッション 管 理 情 報 やアクセスセキュリティ 情 報 など 各 クライアントごとの 情 報 を 一 定 時 間 Application Runtime 上 のメモリ(HttpSession)に 保 持 しています デフォルト 時 間 の 設 定 は 10 分 となっており 10 分 以 上 クライアントからのアクセスがない 場 合 には 再 度 ログ インし 直 す 必 要 があります このデフォルトの 時 間 設 定 は conf/http.xml( 基 本 設 定 ファイル)で 変 更 するこ とができます conf/http.xml の 編 集 に 関 しては WebPlatform 設 定 ガイドを 参 照 してください Page 12 Copyright 2000-2011 株 式 会 社 NTT データイントラマート All rights Reserved.

2 スクリプト 開 発 モデルのプログラミング 2.3 データベースからデータを 取 得 する ここでは intra-mart が 用 意 しているオブジェクトやメソッドの 中 から データベースアクセスの 為 のオブジェクトおよ びメソッドを 利 用 して 実 際 のデータベースからデータを 取 得 します 前 章 の 手 順 に 従 って サーバ 側 で 動 的 に 生 成 されるページを 作 成 していきます まずは 下 記 表 のようなデータベースを 用 意 してください 社 員 マスタ(m_sample_stf) 列 名 内 容 属 性 データ 型 サイズ(bytes) staff_cd 社 員 コード 主 キー テキスト 型 20 stf_name_kanji 社 員 ( 漢 字 ) テキスト 型 50 stf_name_kana 社 員 (カナ) テキスト 型 50 stf_name_eng 社 員 ( 英 字 ) テキスト 型 50 < 利 用 するデータベース> <データ 取 得 の 流 れ> 2.3.1 ベースとなるプレゼンテーション ページ(.html)の 作 成 次 の HTML ファイルは 社 員 コードと 社 員 名 を 表 示 するための 通 常 の HTML ソースの 例 です ホームページ 作 成 ツールや intra-mart ebuilder などを 利 用 すると 表 の 作 成 が 簡 単 に 行 えるので プレゼンテー ション ページの 最 初 のひな 型 作 成 には これらのツールを 利 用 すると 便 利 です <HTML> <BODY> <TABLE border="1"> <TR> <TD> 社 員 コード</TD> <TD> 社 員 名 </TD> </TR> <TR> <TD></TD> <TD></TD> </TR> </TABLE> </BODY> </HTML> < 社 員 コードと 社 員 名 を 表 示 する staff.html> 作 成 者 : 株 式 会 社 NTT データ イントラマート Page 13

intra-mart スクリプト 開 発 モデル プログラミングガイド <staff.html ファイルの 実 行 結 果 > ファンクション コンテナからのデータを 反 映 するために 修 正 した staff.html を 次 に 示 します < 社 員 マスタからのデータ 取 得 用 staff.html> <HTML> <BODY> <TABLE border="1"> <TR> <TD> 社 員 コード</TD> <TD> 社 員 名 </TD> </TR> <TR> <TD><IMART type="string" value=staff_code></imart></td> <TD><IMART type="string" value=staff_name></imart></td> </TR> </TABLE> </BODY> </HTML> 2.3.2 ファンクション コンテナ(.js)の 作 成 ファンクション コンテナの init 関 数 を 作 成 します ファイル 名 は staff.js とします この staff.js では 次 の2つのことを 実 現 します 1 データベース 上 の 社 員 マスタからデータを 取 得 します 2 取 得 したデータを HTML へ 引 き 渡 します < 社 員 マスタからのデータ 取 得 用 staff.js> // HTML へ 渡 す 値 を 宣 言 します var staff_code; var staff_name; // init 関 数 の 定 義 function init(request) { var objdata = false; // データベースから 取 得 したデータ 格 納 用 // データベースから 社 員 データを 全 て 取 得 します objdata = DatabaseManager.select("SELECT * FROM m_sample_stf"); if(objdata.data.length!= 0){ // HTML へ 渡 すデータのリストを 設 定 します staff_code = objdata.data[0].staff_cd; staff_name = objdata.data[0].stf_name_kanji; else{ staff_code= ; // データを 取 得 できなかった 場 合 staff_name= ; staff_cd stf_name_kanji はデータベースの 列 名 です Page 14 Copyright 2000-2011 株 式 会 社 NTT データイントラマート All rights Reserved.

2 スクリプト 開 発 モデルのプログラミング 解 説 DatabaseManager オブジェクト-1 データベースへのアクセスは DatabaseManager オブジェクトを 通 して 簡 単 に 行 えます この 例 では DatabaseManager オブジェクトの select メソッドを 呼 び 出 しています このようにパラメー タに SQL 形 式 の SELECT 文 を 記 述 してデータベースからデータを 取 得 することができます 取 得 したデータはオブジェクトとして 返 されます データベースから 取 得 したレコードは select メソッド が 返 すオブジェクトのもつ 配 列 プロパティとして 保 存 されています 名 称 は data です select メソッド が 返 すオブジェクトには 他 にも 取 得 できたレコード 数 を 保 有 する countrow などがあります intra-mart WebPlatform が 提 供 するオブジェクトとメソッドの 詳 細 は intra-mart WebPlatform に 付 属 す る API リスト を 参 照 してください 2.3.3 アプリケーションの 実 行 このアプリケーションを 実 行 した 結 果 を 次 に 示 します < 実 行 結 果 > 作 成 した staff.js ファイルの 10 11 行 目 の date[0]を date[1] data[2]に 変 更 してみてください 2 件 目 3 件 目 のレコードが 表 示 されるようになります 作 成 者 : 株 式 会 社 NTT データ イントラマート Page 15

intra-mart スクリプト 開 発 モデル プログラミングガイド 2.4 取 得 したデータの 一 覧 表 示 前 節 で 作 成 した 社 員 名 表 示 ページ(staff)を 改 良 して 社 員 名 一 覧 を 表 示 するようにソースを 修 正 します 2.4.1 ベースとなるプレゼンテーション ページ(.html)への 追 加 一 覧 の 表 示 は <IMART type="repeat">タグを 利 用 します repeat は タグで 囲 まれた 範 囲 を 指 定 回 数 だけ 繰 り 返 し 実 行 して HTML へ 展 開 します さらに Java スクリプト 側 で 作 成 した 配 列 と 連 動 して 配 列 内 のデータを 順 次 表 示 することもできます < 社 員 マスタからのデータ 取 得 用 HTML( 一 覧 表 示 用 )> <HTML> <BODY> <TABLE border="1"> <TR> <TD> 社 員 コード</TD> <TD> 社 員 名 </TD> </TR> <IMART type="repeat" list=stafflist item="record"> <TR> <TD><IMART type="string" value=record.staff_cd></imart></td> <TD><IMART type="string" value=record.stf_name_kanji></imart></td> </TR> </IMART> </TABLE> </BODY> </HTML> 2.4.2 ファンクション コンテナ(.js)の 作 成 次 に JavaScript ファイルを 示 します < 社 員 マスタからのデータ 取 得 用 Java スクリプト( 一 覧 表 示 用 )> //HTML へ 渡 す 値 を 宣 言 します var stafflist; // init 関 数 の 定 義 function init() { var objdata = false; // データベースから 取 得 したデータ 格 納 用 // データベースから 社 員 データを 全 て 取 得 します objdata = DatabaseManager.select( "SELECT * FROM m_sample_stf" ); // HTML へ 渡 すデータのリストを 設 定 します stafflist = objdata.data; m_sample_stf は 社 員 マスタテーブルです Page 16 Copyright 2000-2011 株 式 会 社 NTT データイントラマート All rights Reserved.

2 スクリプト 開 発 モデルのプログラミング 2.4.3 アプリケーションの 実 行 次 にアプリケーションを 実 行 した 結 果 を 示 します < 実 行 結 果 > 解 説 項 目 の 拡 張 完 成 したアプリケーションには 社 員 名 (カナ) の 項 目 を 追 加 することができます 変 更 するのはプレ ゼンテーション ページ(staff.html)だけで ファンクション コンテナは 変 更 の 必 要 はありません 下 記 のリストでは の 行 を 変 更 しました < 社 員 マスタからのデータ 取 得 用 HTML( 一 覧 表 示 用 )- 項 目 を 拡 張 > <HTML> <BODY> <TABLE border="1"> <TR> <TD> 社 員 コード</TD> <TD> 社 員 名 </TD> <TD> 社 員 名 (カナ)</TD> 変 更 した 行 </TR> <IMART type="repeat" list=stafflist item="record"> <TR> <TD><IMART type="string" value=record.staff_cd></imart></td> <TD><IMART type="string" value=record.stf_name_kanji></imart></td> <TD><IMART type="string" value=record.stf_name_kana></imart></td> 変 更 した 行 </TR> </IMART> </TABLE> </BODY> </HTML> 作 成 者 : 株 式 会 社 NTT データ イントラマート Page 17

intra-mart スクリプト 開 発 モデル プログラミングガイド < 実 行 結 果 > Page 18 Copyright 2000-2011 株 式 会 社 NTT データイントラマート All rights Reserved.

2 スクリプト 開 発 モデルのプログラミング 2.5 データの 登 録 更 新 削 除 データの 参 照 ができるようになりましたので データを 追 加 登 録 するページを 作 成 します ページの 名 称 は staffins とし 前 節 で 作 成 した staff.html から<IMART type="link">を 使 ってリンクを 張 ってください 2.5.1 ベースとなるプレゼンテーション ページ(.html)の 作 成 まず 社 員 データ 登 録 用 の 一 般 的 な HTML を 記 述 します データ 送 信 を 行 うので <FORM>タグを 使 います 次 のリストを 参 考 にして ブラウザ 上 に 正 しく 表 示 されるのを 確 認 してください <データ 更 新 フォーム 表 示 用 HTML> <HTML> <BODY> データを 入 力 して 登 録 ボタンを 押 してください <BR> <FORM method="post"> 社 員 コード <INPUT type="text" name="staff_code"><br> 社 員 名 <INPUT type="text" name="staff_name"><br> <BR> <INPUT type="submit" value=" 登 録 "> </FORM> <BR> <IMART type="link" page="sample/user1/staff"> 戻 る</IMART> </BODY> </HTML> 作 成 者 : 株 式 会 社 NTT データ イントラマート Page 19

intra-mart スクリプト 開 発 モデル プログラミングガイド ブラウザ 上 に 正 しく 表 示 されるのを 確 認 後 intra-mart のファンクション コンテナにデータを 送 るために いくつか のタグを<IMART>タグに 変 更 します <ファンクション コンテナとの 連 携 用 staffins.html> <HTML> <BODY> データを 入 力 して 登 録 ボタンを 押 してください <BR> <IMART type="form" method="post" action="insertstaffname"> 社 員 コード <IMART type="input" style="text" name="staff_code"></imart><br> 社 員 名 <IMART type="input" style="text" name="staff_name"></imart><br> <BR> <IMART type="submit" value=" 登 録 "></IMART> </IMART> <BR> <IMART type="link" page="sample/user1/staff"> 戻 る</IMART> </BODY> </HTML> 2.5.2 ファンクション コンテナ(.js)の 作 成 クライアント 上 のブラウザから 送 られてきたデータを サーバ 上 のファンクション コンテナ 上 でデータベースに 反 映 するためのロジックを 記 述 します ファイル 名 は staffins.js です ここでは 次 の2つのことを 行 います 1 クライアントからのリクエストデータの 参 照 2 データベースへの 追 加 データベースへのレコード 追 加 は DatabaseManager オブジェクトに 定 義 されている 次 の3つのメソッドを 呼 び 出 す ことにより 実 現 します begintransaction メソッド トランザクション 開 始 の 宣 言 insert メソッド データの 挿 入 commit/rollback メソッド 挿 入 したデータのコミット/ロールバック <データベースへのデータ 登 録 用 Java スクリプト> function insertstaffname(request) { var objrecord = new Object(); // レコード 登 録 用 オブジェクトを 生 成 var result; // DBアクセスの 結 果 // レコードの 作 成 objrecord.staff_cd = request.staff_code; objrecord.stf_name_kanji = request.staff_name; objrecord.stf_name_kana = request.staff_name_kana; objrecord.stf_name_eng = request.staff_name_eng; // DB 処 理 の 開 始 DatabaseManager.beginTransaction(); // レコードの 挿 入 result = DatabaseManager.insert("m_sample_stf", objrecord); // エラーチェック if (! result.error) { DatabaseManager.commit(); else{ DatabaseManager.rollback(); // 成 功 なのでコミットします // 失 敗 なのでロールバックします Page 20 Copyright 2000-2011 株 式 会 社 NTT データイントラマート All rights Reserved.

2 スクリプト 開 発 モデルのプログラミング 2.5.3 アプリケーションの 実 行 次 に 実 行 結 果 を 示 します <staffins.html 実 行 画 面 > < 実 行 結 果 > 初 期 表 示 されている staffins.html は intra-mart WebPlatform でタグ 解 釈 されて 送 付 された 通 常 の HTML ファイ ルです 作 成 者 : 株 式 会 社 NTT データ イントラマート Page 21

intra-mart スクリプト 開 発 モデル プログラミングガイド 解 説 DatabaseManager オブジェクト-2 ここで 利 用 されている insert メソッドの 他 に 更 新 削 除 用 に 次 の2つのメソッドが 用 意 されています パラメータに 指 定 する WHERE 句 の 条 件 には SQL 文 で 指 定 する WHERE 句 に 与 える 条 件 式 を 記 述 しま す 例 えば 社 員 コードが stf0001 の 社 員 を 削 除 したい 場 合 は DatabaseManager.remove( "m_sample_stf", "staff_cd = 'stf0001'" ); のように 指 定 します 実 際 には プレゼンテーション ページで 指 定 した 社 員 コードを 参 照 する 場 合 がほとん どですので var strwhere = "staff_cd = '" + request.staff_code + "'"; DatabaseManager.remove( "m_sample_stf", strwhere ); となります また 本 オブジェクトでは 同 時 に 複 数 のデータベースへのアクセスできるオプションも 用 意 されています 詳 細 は API リスト の 本 オブジェクトの 項 を 参 照 してください Page 22 Copyright 2000-2011 株 式 会 社 NTT データイントラマート All rights Reserved.

3 Java コンポーネント 群 (im-bizapi)の 利 用 3 Java コンポーネント 群 (im-bizapi)の 利 用 3.1 画 面 共 通 モジュール Web ベースでの GUI 開 発 でよく 利 用 される 画 面 部 品 のモジュールです それぞれのモジュールに 適 当 なプロパ ティを 設 定 して 呼 び 出 すだけで データベースと 連 動 したユーザインタフェースを 簡 単 に 作 成 できます 提 供 される 画 面 共 通 モジュールの 例 一 般 的 な 入 力 コントロール 群 ユーザインタフェース 構 築 に 必 要 となる 一 般 的 な 入 力 コントロール(テキ ストフィールド パスワードボックス ラジオボタン チェックボックス テキ ストエリア など)を 用 意 しています これらのコントロール 郡 は サーバサ イドのスクリプトやデータと 連 動 が 可 能 なコントロールとなります レイアウト 制 御 モジュール 群 さまざまな 条 件 により 表 示 すべき 値 を 変 化 させたり 表 示 する 内 容 を 選 択 したりするなど HTMLでは 表 現 できないプログラム 的 な 要 素 をプレ ゼンテーション ページ 内 に 定 義 することができます 構 築 された Web ユーザインタフェースの 例 前 述 のオブジェクト/ 関 数 群 を 利 用 して HTML 上 で 編 集 していくことで 細 かなレベルのユーザインタフ ェースの 構 築 が 可 能 になり 従 来 の VisualBasic などによるユーザインタフェースと 遜 色 がないスタイルの Web システムの 構 築 が 可 能 です 画 面 の 作 成 例 は 以 下 のようになっています < 画 面 の 作 成 例 > 3.1.1 画 面 デザイン 共 通 モジュール <IMART>タグには 画 面 共 通 モジュールの 他 に 画 面 デザイン 共 通 モジュールがあり 主 に 表 示 系 に 特 化 した タグ 群 が 用 意 されています ここでは 例 として ImTitleBar タグを 使 ったサンプルを 示 します ImTitleBar タグは タイトルバーを 自 動 生 成 し ます <サンプル> <HTML> <HEAD> <IMART type="imdesigncss"></imart> </HEAD> <BODY> <!-- タイトルバー 表 示 --> <IMART type="imtitlebar" title=" 新 規 登 録 " icon="images/standard/title.gif"> </IMART> </BODY> </HTML> 作 成 者 : 株 式 会 社 NTT データ イントラマート Page 23

intra-mart スクリプト 開 発 モデル プログラミングガイド < 実 行 画 面 > この 他 にも 様 々な 画 面 デザイン 共 通 モジュールが 用 意 されています 詳 細 については API をご 覧 になってくだ さい Page 24 Copyright 2000-2011 株 式 会 社 NTT データイントラマート All rights Reserved.

3 Java コンポーネント 群 (im-bizapi)の 利 用 3.1.2 標 準 画 面 の 作 り 方 ( 共 通 画 面 デザイン) 以 下 のドキュメントが 用 意 されています 画 面 デザインガイドライン スタイルシート 仕 様 書 画 面 デザインガイドラインに 準 じた API も 用 意 されています API 仕 様 は 画 面 デザインガイドラインのドキュメント に 掲 載 されています これを 参 考 に 共 通 化 API を 利 用 して 画 面 を 作 成 することにより 製 品 標 準 の 画 面 と 同 様 の 画 面 デザインでアプリ ケーション 開 発 ができます デザインが 共 通 化 されると 他 の 画 面 と 見 た 目 や 操 作 性 が 統 一 され メニューから 呼 び 出 されたときに 利 用 者 が 違 和 感 無 くアプリケーションを 操 作 できるなどのメリットがありますので アプリケーショ ン 開 発 の 際 には デザイン 統 一 の 方 法 としてこのガイドラインの 利 用 を 検 討 してください intra-mart WebPlatform/AppFramework の 持 つ 各 画 面 ソースは そのほとんどがプレーンな 状 態 でインストー ルされています 画 面 デザインガイドラインの 適 用 方 法 や APIの 使 用 例 としてご 活 用 ください 作 成 者 : 株 式 会 社 NTT データ イントラマート Page 25

intra-mart スクリプト 開 発 モデル プログラミングガイド 3.2 Storage Serviceの 利 用 方 法 intra-mart ではStorage Service を 利 用 することにより 分 散 システム 構 築 時 においても 容 易 にファイルの 共 有 が 可 能 となります ここでは ブラウザからアップロードされたファイルをStorage Service に 保 存 したり またStorage Service に 保 存 されているファイルをダウンロードしたりする 画 面 を 作 ってみます 3.2.1 ファイル アップロード まずは ファイルをアップロードしてStorage Service に 保 存 するためのフォームを 作 成 します < 送 信 用 フォーム filer.html > <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 //EN"> <HTML> <HEAD> <TITLE>File Center</TITLE> </HEAD> <BODY bgcolor="whitesmoke"> <H2>Upload</H2> <IMART type="form" action="action_upload" method="post" enctype="multipart/form-data"> <INPUT type="file" name="local_file"> <INPUT type="submit" value=" send "> </IMART> </BODY> </HTML> <!-- End of File --> 受 信 したファイルデータをStorage Service に 保 存 するためのファンクション コンテナを 記 述 します ファンクション コンテナでは ファイルデータをバイナリ 形 式 で 受 け 取 るので Storage Service に 対 してもバイナリ データとしてファイル 保 存 を 行 います <ファイルを 受 信 するためのファンクション コンテナ filer.js > // 画 面 初 期 化 function init(request){ var root = new VirtualFile("filebox"); // 保 存 ディレクトリの 有 無 のチェック if(! root.isdirectory()){ root.makedirectories(); // ディレクトリ 作 成 // 指 定 ファイルの 受 信 function action_upload(request){ // パラメータ 情 報 (=RequestParameter オブジェクト)を 取 得 var parameter = request.getparameter("local_file"); // ファイルの 中 身 を 取 得 (バイナリ) var filedata = parameter.getvalueasstream(); // ファイル 名 の 取 得 var filename = parameter.getfilename() // ファイルの 書 き 出 し var vf = new VirtualFile("filebox/" + filename); var res = vf.save(filedata); Page 26 Copyright 2000-2011 株 式 会 社 NTT データ イントラマート All rights Reserved.

3 Java コンポーネント 群 (im-bizapi)の 利 用 この 画 面 では 以 下 のように 動 作 します ファイルコントロールにより 選 択 されたファイルデータがサーバに 送 られます サーバでは ファイルの 内 容 の 有 無 を 確 認 します ファイルを 受 信 していた 場 合 受 信 したファイルのファイル 名 を 取 得 します 元 のファイル 名 のまま 受 信 したファイルデータをStorage Service に 出 力 します < 実 行 画 面 ( 結 果 )> 解 説 <INPUT type="file"> HTML フォーム 中 で 利 用 している<INPUT type="file">について もう 少 し 詳 しく 説 明 します フォーム コントロールである<INPUT type="file">を 利 用 すると ブラウザからサーバに 対 してファイル をアップロードすることができます この 時 フォームは 以 下 のような 記 述 が 必 要 になります <IMART type="form" method="post" enctype="multipart/form-data"> これは ファイルの 情 報 を MIME 形 式 にエンコードして POST モードでサーバにリクエストをするという 指 定 になります RequestParameter オブジェクト intra-mart では アップロードされたファイルの 操 作 を 容 易 にする RequestParameter オブジェクトを 用 意 しています 本 オブジェクトを 利 用 することで サーバ 側 では 受 信 したデータに 対 して 特 殊 な 処 理 を 行 うことなくファイルを 取 り 出 すことができます RequestParameter オブジェクトには アップロードされたフ ァイルのファイル 名 を 取 得 するメソッド 等 も 用 意 されています 詳 しくは API リストを 参 照 してください 作 成 者 : 株 式 会 社 NTT データ イントラマート Page 27

intra-mart スクリプト 開 発 モデル プログラミングガイド 3.2.2 ファイルリストの 表 示 ここでは 前 節 で 作 成 した 画 面 を 改 良 して アップロードしたファイルの 一 覧 を 表 示 するようにソースを 修 正 します < 一 覧 表 を 表 示 するためのプレゼンテーション ページ(filer.html)> <HTML> <HEAD> <TITLE>File Center</TITLE> </HEAD> <BODY bgcolor="whitesmoke"> <H2>Upload</H2> <IMART type="form" action="action_upload" method="post" enctype="multipart/form-data"> <INPUT type="file" name="local_file"> <INPUT type="submit" value=" send "> </IMART> <HR> <H2>File List</H2> <TABLE border="1"> <TR><TH>File Name</TH></TR> <IMART type="repeat" list=flist item="rec"> <TR> <TD><IMART type="string" value=rec></imart></td> </TR> </IMART> </TABLE> </BODY> </HTML> アップロードされたファイルを 一 覧 表 として 表 示 するためには 保 存 されているファイルをリストとして 取 得 する 必 要 があります Storage Service に 問 い 合 わせてファイルリストを 取 得 するためのコードを 追 加 します Page 28 Copyright 2000-2011 株 式 会 社 NTT データ イントラマート All rights Reserved.

3 Java コンポーネント 群 (im-bizapi)の 利 用 var flist, rec; <ファイル 一 覧 を 取 得 するように 修 正 したファンクション コンテナ> // 画 面 初 期 化 function init(request){ var root = new VirtualFile("filebox"); // 保 存 ディレクトリの 有 無 のチェック if(! root.isdirectory()){ root.makedirectories(); flist = root.files(); // ファイルリストの 取 得 // 指 定 ファイルの 受 信 function action_upload(request){ // パラメータ 情 報 (=RequestParameter オブジェクト)を 取 得 var parameter = request.getparameter("local_file"); // ファイルの 中 身 を 取 得 (バイナリ) var filedata = parameter.getvalueasstream(); // ファイル 名 の 取 得 var filename = parameter.getfilename() // ファイルの 書 き 出 し var vf = new VirtualFile("filebox/" + filename); var res = vf.save(filedata); 解 説 Storage Service 上 のファイルを 操 作 する API VirtualFile Storage Service( 標 準 では%Storage Service%/storage/)にあるファイルやディレクトリの 作 成 削 除 お よび 各 種 情 報 の 取 得 を 行 う API です この API を 利 用 することで 様 々なファイルの 作 成 や 取 得 またディレクトリの 作 成 やリストの 取 得 などが でき 分 散 システムにおいても すべての Application Runtime 間 で 環 境 に 依 存 することなくファイル を 共 有 することができます < 実 行 画 面 ( 結 果 )> この 実 行 画 面 では すでに 1 つのファイルがアップロードされていることが 確 認 できます 作 成 者 : 株 式 会 社 NTT データ イントラマート Page 29

intra-mart スクリプト 開 発 モデル プログラミングガイド 3.2.3 ファイル ダウンロード ファイルをアップロードできて アップロードされたファイルがStorage Service に 保 存 されていることが 確 認 できた ので 次 は 保 存 されているファイルをブラウザにダウンロードする 機 能 を 追 加 します 前 節 で 作 成 した 画 面 に 対 してファイルをダウンロードできるようにソースを 修 正 します ファイルをダウンロードするには プレゼンテーション ページにダウンロードをするためのリンクを 追 加 します また そのリンクがクリックされた 時 にファイルを 送 信 するためのロジックをファンクション コンテナに 追 加 していきます <ダウンロード 用 リンクを 追 加 したプレゼンテーション ページ(filer.html)> <HTML> <HEAD> <TITLE>File Center</TITLE> </HEAD> <BODY bgcolor="whitesmoke"> <H2>Upload</H2> <IMART type="form" action="action_upload" method="post" enctype="multipart/form-data"> <INPUT type="file" name="local_file"> <INPUT type="submit" value=" send "> </IMART> <HR> <H2>File List</H2> <TABLE> <TR><TH>File Name</TH><TH></TH></TR> <IMART type="repeat" list=flist item="rec"> <TR> <TD><IMART type="string" value=rec></imart></td> <TD> <IMART type="link" action="action_download" server_file=rec>download</imart> </TD> </TR> </IMART> </TABLE> </BODY> </HTML> download と 表 示 するためのリンクを 作 成 します このリンクには クリックされた 時 にダウンロード 処 理 をするための 関 数 action_download が 指 定 されていますの で ファンクション コンテナ 内 にダウンロード 関 数 action_download を 追 加 します var flist, rec; <ダウンロード 用 関 数 を 追 加 したファンクション コンテナ> // 画 面 初 期 化 function init(request){ var root = new VirtualFile("filebox"); // 保 存 ディレクトリの 有 無 のチェック if(! root.isdirectory()){ root.makedirectories(); flist = root.files(); // ファイルリストの 取 得 // 指 定 ファイルの 受 信 function action_upload(request){ // パラメータ 情 報 (=RequestParameter オブジェクト)を 取 得 var parameter = request.getparameter("local_file"); // ファイルの 中 身 を 取 得 (バイナリ) Page 30 Copyright 2000-2011 株 式 会 社 NTT データ イントラマート All rights Reserved.

3 Java コンポーネント 群 (im-bizapi)の 利 用 var filedata = parameter.getvalueasstream(); // ファイル 名 の 取 得 var filename = parameter.getfilename() // ファイルの 書 き 出 し var vf = new VirtualFile("filebox/" + filename); var res = vf.save(filedata); // 指 定 ファイルの 送 信 function action_download(request){ var fpath = new VirtualFile("filebox/" + request.server_file); // 取 得 Module.download.send(fpath.load(), request.server_file); // 送 信 < 実 行 画 面 ( 結 果 )> 作 成 者 : 株 式 会 社 NTT データ イントラマート Page 31

intra-mart スクリプト 開 発 モデル プログラミングガイド 解 説 ダウンロード API Module.download.send() サーバから HTML 形 式 以 外 での 情 報 の 送 信 を 行 うための API です 主 に ファイルをダウンロードす る 場 合 に 利 用 します 情 報 をダウンロードする 時 には ブラウザが その 情 報 はどのような 形 式 なのか を 判 別 するための 情 報 を 付 加 する 必 要 がありますが この API では 自 動 的 に 情 報 の 形 式 を 判 断 して 適 切 な 形 でダウンロードを 行 える 機 能 を 提 供 しています 例 えば Word で 保 存 されたファイルデータをダウンロードする 場 合 ファイル 名 として ***.doc という 拡 張 子 を 持 つ 名 称 を 与 えます ダウンロード API では ファイルの 拡 張 子 を 判 断 して MIME コー ドを 決 定 しますので ダウンロードしたコンピュータに Word がインストールされている 場 合 には ブラ ウザ 内 にドキュメントが 表 示 されますし Word がインストールされていない 場 合 には ファイルを 保 存 するためのダイアログボックスが 表 示 されます 3.2.4 ファイルの 削 除 前 節 までで ファイルをアップロードすることと アップロードしたファイルをダウンロードすることができました しか し このままではアップロードされたファイルがStorage Service に 溜 まっていってしまうので ここでは アップロード されてStorage Service 上 に 保 存 されているファイルを 削 除 する 機 能 を 追 加 します < 削 除 用 リンクを 追 加 したプレゼンテーション ページ(filer.html)> <HTML> <HEAD> <TITLE>File Center</TITLE> </HEAD> <BODY bgcolor="whitesmoke"> <H2>Upload</H2> <IMART type="form" action="action_upload" method="post" enctype="multipart/form-data"> <INPUT type="file" name="local_file"> <INPUT type="submit" value=" send "> </IMART> <HR> <H2>File List</H2> <TABLE> <TR><TH>File Name</TH><TH></TH></TR> <IMART type="repeat" list=flist item="rec"> <TR> <TD><IMART type="string" value=rec></imart></td> <TD> <IMART type="link" action="action_download" server_file=rec>download</imart> <IMART type="link" action="action_remove" server_file=rec>remove</imart> </TD> </TR> </IMART> </TABLE> </BODY> </HTML> Page 32 Copyright 2000-2011 株 式 会 社 NTT データ イントラマート All rights Reserved.

3 Java コンポーネント 群 (im-bizapi)の 利 用 var flist, rec; < 削 除 用 関 数 を 追 加 したファンクション コンテナ(filer.js)> // 画 面 初 期 化 function init(request){ var root = new VirtualFile("filebox"); // 保 存 ディレクトリの 有 無 のチェック if(! root.isdirectory()){ root.makedirectories(); flist = root.files(); // ファイルリストの 取 得 // 指 定 ファイルの 受 信 function action_upload(request){ // パラメータ 情 報 (=RequestParameter オブジェクト)を 取 得 var parameter = request.getparameter("local_file"); // ファイルの 中 身 を 取 得 (バイナリ) var filedata = parameter.getvalueasstream(); // ファイル 名 の 取 得 var filename = parameter.getfilename() // ファイルの 書 き 出 し var vf = new VirtualFile("filebox/" + filename); var res = vf.save(filedata); // 指 定 ファイルの 送 信 function action_download(request){ var fpath = new VirtualFile("filebox/" + request.server_file); // 取 得 Module.download.send(fpath.load(), request.server_file); // 送 信 // 指 定 ファイルの 削 除 function action_remove(request){ var fpath = new VirtualFile("filebox/" + request.server_file); // 取 得 fpath.remove(); // 削 除 < 実 行 画 面 ( 結 果 )> 削 除 リンクをクリックすると 該 当 するファイルを 削 除 することができます 作 成 者 : 株 式 会 社 NTT データ イントラマート Page 33

intra-mart スクリプト 開 発 モデル プログラミングガイド 解 説 VirtualFile の remove()メソッド ファイルを 削 除 するための API です この API では ファイルの 他 にディレクトリも 削 除 することができます ただし ディレクトリを 削 除 する 場 合 には 削 除 対 象 としているディレクトリ 内 にファイルやディレクトリが 存 在 せずに 空 である 必 要 がありますので 注 意 してください 画 面 遷 移 について このサンプルでは 画 面 遷 移 を 一 切 行 わずに 1 画 面 ですべての 機 能 を 持 っています この 場 合 各 機 能 に 対 するリクエストや リクエスト 後 の 画 面 の 表 示 の 際 に リンクやフォームに 対 する page 指 定 を 行 わなくても 自 分 自 身 を 再 度 表 示 することができます Page 34 Copyright 2000-2011 株 式 会 社 NTT データ イントラマート All rights Reserved.

3 Java コンポーネント 群 (im-bizapi)の 利 用 3.3 メール 連 携 モジュール(ファンクション コンテナ) 本 モジュールを 利 用 することで SMTP/POP3 互 換 のメールサーバに 対 するメールの 送 信 処 理 を 行 うことができま す 3.3.1 メール 送 信 ここでは メールを 送 信 するための 画 面 を 作 成 します メールを 送 信 するためには conf/imart.xml 内 の SMTP サーバの 設 定 を 正 しく 行 ってください メールサーバの 設 定 メールサーバの 設 定 は conf/imart.xml ファイルで 行 います 記 述 例 は 以 下 の 通 りです <メールサーバの 設 定 > <smtp-server host="localhost" port="25" mailbox-check="false" /> メール 送 信 管 理 の 設 定 メール 送 信 の 設 定 には MailSender オブジェクトを 用 います MailSender オブジェクトのメソッドは 以 下 の 11 より 構 成 されており これらを 用 いてファンクション コンテナでメール 送 信 の 設 定 を 行 います (1) setfrom(string address,string personal) : メール 送 信 元 (From)を 設 定 するメソッド (2) addto(string address,string personal) : メール 送 信 先 (To)を 追 加 するメソッド (3) addcc(string address,string personal) : メール 送 信 先 (Cc)を 追 加 するメソッド (4) addbcc(string address,string personal) : メール 送 信 先 (Bcc)を 追 加 するメソッド (5) addreplyto(string replyto) : メール 返 信 先 を 追 加 するメソッド (6) addheader(string name,string value) : メールヘッダーを 追 加 するメソッド (7) setsubject(string subject) : メール 題 名 (Subject)を 設 定 するメソッド (8) settext(string text) : 本 文 を 設 定 するメソッド (9) addattachment(string filename,string file) : メールへの 添 付 ファイルを 追 加 するメソッド (10) send() : メールを 送 信 するメソッド (11) geterrormessage() : メール 送 信 エラー 時 のメッセージを 取 得 するメソッド 作 成 者 : 株 式 会 社 NTT データ イントラマート Page 35

intra-mart スクリプト 開 発 モデル プログラミングガイド 前 記 メソッドの 記 述 例 は 以 下 のようになります var ret; var errormessage; <メールの 送 信 処 理 (ファンクション コンテナ)> var locale = AccessSecurityManager.getSessionInfo().locale; // ロケールの 取 得 var mailsender = new MailSender(locale); // MailSender オブジェクトを 生 成 //---------------------------- // 送 信 情 報 の 設 定 //---------------------------- // 送 信 先 メールアドレス mailsender.addto("mail000@nttdata.co.jp"); mailsender.addto("mail001@nttdata.co.jp"); mailsender.addto("mail002@nttdata.co.jp"); mailsender.addto("mail003@nttdata.co.jp"); mailsender.addto("mail004@nttdata.co.jp"); // CC メールアドレスをセット mailsender.addcc("mail005@nttdata.co.jp"); // 送 信 元 メールアドレス mailsender.setfrom(request.mail_from); //---------------------------- //メールタイトルと 内 容 をセット //---------------------------- // 題 名 の 設 定 mailsender.setsubject("メール 送 信 サンプル"); // 本 文 の 設 定 mailsender.settext("メール 送 信 のテストです " + "\n" + "うまく 送 れましたか?"); //メール 送 信 ret = mailsender.send(); //エラー 判 定 if( ret ) { errormessage = "エラーメッセージ:" + mailsender.geterrormessage(); //メール 送 信 エラー Module.alert.back( "SYSTEM.ERR", errormessage); Page 36 Copyright 2000-2011 株 式 会 社 NTT データ イントラマート All rights Reserved.

3 Java コンポーネント 群 (im-bizapi)の 利 用 3.3.1.1 メール 送 信 フォームの 作 成 メールを 送 信 するためのフォームを 作 成 します プレゼンテーション ページのフォーム 内 には メール 送 信 に 必 要 な 送 信 先 アドレス 送 信 者 アドレス 件 名 本 文 を 登 録 するコントロールを 用 意 します また ファンクション コンテナでは 受 け 取 った 情 報 を 元 にして MailSender API を 利 用 してメール 送 信 を 行 うための 関 数 を 定 義 します <メール 送 信 用 フォームを 記 述 したプレゼンテーション ページ(sender.html)> <HTML> <HEAD> <TITLE>Mail Sender</TITLE> </HEAD> <BODY bgcolor="whitesmoke"> <IMART type="form" action="action_send" method="post"> To: <INPUT type="text" name="mail_to"><br> From: <INPUT type="text" name="mail_from"><br> Subject: <INPUT type="text" name="mail_subject"><br> Message: <TEXTAREA name="mail_body" cols="40" rows="8"></textarea><br> <INPUT type="submit" value=" send "> </IMART> </BODY> </HTML> <メール 送 信 ロジックを 記 述 したファンクション コンテナ(sender.js)> // メールの 送 信 function action_send(request){ // ロケールの 取 得 var locale = AccessSecurityManager.getSessionInfo().locale; // MailSender オブジェクトを 生 成 var mailsender = new MailSender(locale); // 送 信 情 報 の 設 定 mailsender.addto(request.mail_to); mailsender.setfrom(request.mail_from); mailsender.setsubject(request.mail_subject); // 本 文 の 設 定 mailsender.settext(request.mail_body); // メールの 送 信 if( mailsender.send() ){ // 送 信 成 功 Module.alert.link("SYSTEM.SUCCESS", "メールを 送 信 しました ", "sender"); else{ // 送 信 失 敗 Module.alert.link("SYSTEM.ERR", mailsender.geterrormessage(),"sender"); 作 成 者 : 株 式 会 社 NTT データ イントラマート Page 37

intra-mart スクリプト 開 発 モデル プログラミングガイド < 実 行 画 面 ( 結 果 )> フォーム 中 の 必 要 事 項 をすべて 入 力 した 後 に[send]ボタンをクリックするとメールを 送 信 することができます 解 説 MailSender API メールを 送 信 するための API です サンプルでは 送 信 先 送 信 者 件 名 本 文 の 設 定 しか 行 っていませんが CC や BCC の 設 定 をする こともできます TO および From 設 定 方 法 MailSender オブジェクトを 利 用 することで 送 信 先 や 送 信 者 また CC や BCC などの 設 定 には メール アドレスだけではなく 名 前 も 設 定 することができます 詳 しくは API リストを 参 照 してください メール 送 信 とサーバ 処 理 速 度 メールを 送 信 する 場 合 Application Runtime と SMTP サーバが 連 携 する 必 要 があります 送 信 するメールの 情 報 量 はもちろんのこと ネットワーク 環 境 やネットワークトラフィックなどによりメール 送 信 処 理 時 間 がかかる 場 合 があります 3.3.2 添 付 ファイル 付 きメールの 送 信 前 節 で 作 成 したメール 送 信 フォームを 改 良 して 添 付 ファイルをメール 本 文 と 共 に 送 信 できるようにします プレゼ ンテーション ページでは 添 付 ファイルをアップロードするためのフォーム コントロールを 追 加 し フォームの 属 性 を 変 更 します ファンクション コンテナは フォームの 修 正 に 合 わせて メール 送 信 関 数 を 添 付 ファイルに 対 応 できるように 修 正 します <ファイルアップロード 用 コントロールを 追 加 したプレゼンテーション ページ(sender.html)> <HTML> <HEAD> <TITLE>Mail Sender</TITLE> </HEAD> <BODY bgcolor="whitesmoke"> <IMART type="form" action="action_send" method="post" enctype="multipart/form-data"> To: <INPUT type="text" name="mail_to"><br> From: <INPUT type="text" name="mail_from"><br> Subject: <INPUT type="text" name="mail_subject"><br> Attachment: <INPUT type="file" name="mail_file"><br> Message: <TEXTAREA name="mail_body" cols="40" rows="8"></textarea><br> <INPUT type="submit" value=" send "> </IMART> </BODY> </HTML> Page 38 Copyright 2000-2011 株 式 会 社 NTT データ イントラマート All rights Reserved.

3 Java コンポーネント 群 (im-bizapi)の 利 用 解 説 ファイルをアップロードするためのフォーム ファイルをアップロードするためには 以 下 のようなフォームの 記 述 が 必 要 になります <IMART type="form" method="post" enctype="multipart/form-data"> こうすることで サーバ 上 では フォーム コントロール <INPUT type="file"> によりローカルのファイ ルを 受 け 取 ることができます < 添 付 ファイル 送 信 に 対 応 したファンクション コンテナ(sender.js)> // メールの 送 信 function action_send(request){ // ロケールの 取 得 var locale = AccessSecurityManager.getSessionInfo().locale; // MailSender オブジェクトを 生 成 var mailsender = new MailSender(locale); // 送 信 情 報 の 設 定 mailsender.addto(request.mail_to); mailsender.setfrom(request.mail_from); mailsender.setsubject(request.mail_subject); // 添 付 ファイルの 設 定 (RequestParameter オブジェクトとして 取 得 ) var parameter = request.getparameter("mail_file"); if( parameter!= null && parameter.getlength() > 0 ) { // ファイル 名 の 取 得 filename = parameter.getfilename() // ファイルの 中 身 を 取 得 (バイナリ) filedata = parameter.getvalueasstream(); 添 付 ファイルの 設 定 mailsender.addattachment(filename, filedata); // 本 文 の 設 定 mailsender.settext(request.mail_body); // メールの 送 信 if( mailsender.send() ){ // 送 信 成 功 Module.alert.link("SYSTEM.SUCCESS", "メールを 送 信 しました ","sender"); else{ // 送 信 失 敗 Module.alert.link("SYSTEM.ERR", mailsender.geterrormessage(),"sender"); 作 成 者 : 株 式 会 社 NTT データ イントラマート Page 39

intra-mart スクリプト 開 発 モデル プログラミングガイド < 実 行 画 面 ( 結 果 )> 解 説 添 付 ファイルとメール 送 信 速 度 ファイルを 添 付 してメール 送 信 する 場 合 RFC の 規 約 によりファイルデータそのものをエンコードした のち メール 本 文 を 含 めたメール 情 報 全 体 をエンコードしてから SMTP サーバに 対 して 送 信 する 必 要 があります このデータのエンコード 処 理 は MailSender API が 自 動 的 に 行 いますが エンコード 処 理 時 には アプリケーションサーバに 負 荷 が 掛 かります 添 付 ファイルと 処 理 速 度 添 付 ファイルを 送 信 する 場 合 ブラウザが Web サーバに 対 してファイルデータを 送 信 し その 情 報 を 受 信 したアプリケーションサーバがメール 送 信 処 理 を 行 います 1 つのメール 送 信 に 対 して 複 数 のネットワークを 介 しますので サイズの 大 きなファイルを 添 付 してメー ル 送 信 する 場 合 には メール 送 信 処 理 に 時 間 がかかってしまう 場 合 があります Page 40 Copyright 2000-2011 株 式 会 社 NTT データ イントラマート All rights Reserved.

3 Java コンポーネント 群 (im-bizapi)の 利 用 3.4 共 通 ライブラリの 作 成 intra-mart WebPlatform では ユーザが<IMART>タグや グローバル 関 数 API などを 自 由 に 定 義 し 利 用 する ことが 可 能 です この 章 では これらの 設 定 方 法 や 利 用 方 法 などを 紹 介 します 3.4.1 拡 張 APIの 作 成 3.4.1.1 APIの 登 録 intra-mart WebPlatform では API に 関 してもユーザが 定 義 することが 可 能 です ユーザ 定 義 の 拡 張 API はユー ザ 独 自 のオブジェクトを 実 装 した js ファイルと system_install.xml によって 登 録 することができます オブジェクトの 実 装 の 仕 方 によって 静 的 な 関 数 を 定 義 した API および new 演 算 子 を 用 いてインスタンスを 生 成 する 形 式 の API を 実 装 することができます 設 定 方 法 ( 静 的 なメソッド) 1. この 例 では 静 的 な 関 数 を 持 つオブジェクトを 登 録 します 作 成 した js ファイルは 任 意 の 場 所 に 保 存 し てください /** * static オブジェクトの 作 成 */ function ImSampleStaff(){ <ソース 例 > /** * すべてのスタッフコードを 取 得 する */ ImSampleStaff.getStaffCds = function (){ var sql = "SELECT staff_cd FROM m_sample_stf " var result = DatabaseManager.execute(sql); return result; /** * すべてのスタッフ 名 を 取 得 する */ ImSampleStaff.getStaffNames = function (){ var sql = "SELECT stf_name_kanji FROM m_sample_stf " var result = DatabaseManager.execute(sql); return result; 2. conf/system_install.xml ファイルに 以 下 の 内 容 を 加 えます 記 述 方 法 は <api-script>オブジェクトを 定 義 した js ファイルパス#オブジェクト</api-script>です <system-install> <java-script-api> <api-script>sample/prog_guide/common_libs/api/im_sample_staff#imsamplestaff</api-script> 3. サーバを 再 起 動 してください 作 成 者 : 株 式 会 社 NTT データ イントラマート Page 41

intra-mart スクリプト 開 発 モデル プログラミングガイド 4. API を 利 用 するには ファンクション コンテナからの 呼 び 出 しを 行 います var acdlist = new Array(); var anamelist = new Array(); <ソース 例 > function init(){ acdlist = getcdlist().data; anamelist = getnamelist().data; function getcdlist(){ var odata = ImSampleStaff.getStaffCds(); return odata; function getnamelist(){ var odata = ImSampleStaff.getStaffNames(); return odata; <ソース 例 > <HTML> <HEAD><TITLE>test</TITLE> </HEAD> <BODY> <TABLE> <TD> [staff cd list]<br><br> <TABLE border="1"> <IMART type="repeat" list=acdlist item="record" index="idx"> <TR> <TD><IMART type="string" value=record.staff_cd></imart></td> </TR> </IMART> </TABLE> </TD> <TD> [staff name list]<br><br> <TABLE border="1"> <IMART type="repeat" list=anamelist item="record" index="idx"> <TR> <TD><IMART type="string" value=record.stf_name_kanji></imart></td> </TR> </IMART> </TABLE> </TD> </TABLE> </BODY> </HTML> Page 42 Copyright 2000-2011 株 式 会 社 NTT データ イントラマート All rights Reserved.

3 Java コンポーネント 群 (im-bizapi)の 利 用 < 実 行 結 果 > 設 定 方 法 (インスタンス オブジェクト) 1. この 例 では インスタンスな 関 数 を 持 つオブジェクトを 登 録 します 作 成 した js ファイルは 任 意 の 場 所 に 保 存 してください <ソース 例 (im_area_calc.js)> /** * コンストラクタ */ function ImAreaCalc(valueA, valueb, areatype) { this.valuea = valuea; this.valueb = valueb; this.areatype = areatype; this.getarea = _getareafunction; /** * 面 積 を 求 める 関 数 */ function _getareafunction() { switch(this.areatype) { case "square" : return this.valuea * this.valueb; case "triangle" : return (this.valuea * this.valueb) / 2; default : return; 作 成 者 : 株 式 会 社 NTT データ イントラマート Page 43

intra-mart スクリプト 開 発 モデル プログラミングガイド 2. system_install.xml ファイルに 以 下 の 内 容 を 加 えます 記 述 方 法 は <api-script>オブジェクトを 定 義 した js ファイルパス#オブジェクト</api-script>です <system-install> </java-script-api> <api-script>sample/prog_guide/common_libs/api/im_area_calc#imareacalc</api-script> 3. サーバを 再 起 動 してください 4. API を 利 用 するには ファンクション コンテナからの 呼 び 出 しを 行 います var square; var triangle; <ソース 例 > function init(){ var area = new ImAreaCalc(8,3,"square"); square = area.getarea(); area = new ImAreaCalc(8,3,"triangle"); triangle = area.getarea(); <ソース 例 > <HTML> <HEAD><TITLE></TITLE> </HEAD> <BODY> 縦 8cm 横 3cm の 四 角 形 の 面 積 : <IMART type="string" value=square></imart><br> 底 辺 8cm 高 さ 3cm の 三 角 形 の 面 積 : <IMART type="string" value=triangle></imart><br> </BODY> </HTML> < 実 行 結 果 > Page 44 Copyright 2000-2011 株 式 会 社 NTT データ イントラマート All rights Reserved.

3 Java コンポーネント 群 (im-bizapi)の 利 用 3.4.2 グローバル 関 数 の 作 成 intra-mart WebPlatform には JavaScript で 記 述 したユーザ 定 義 関 数 を グローバル 関 数 として 登 録 する 方 法 が あります グローバル 関 数 と ファンクション コンテナからの 呼 び 出 しの 構 造 は 以 下 のようになっています <ユーザ 定 義 関 数 の 利 用 形 態 > グローバル 関 数 には Procedure.define 関 数 と system_install.xml 設 定 ファイルの 2 通 りの 定 義 方 法 があります 3.4.2.1 sysem_install.xml 設 定 ファイル 様 々な 共 通 ライブラリ 情 報 などを 設 定 するファイルが system_install.xml です グローバル 関 数 が 定 義 されている ファイルの 指 定 をすることで Procedure.define() 関 数 や include() 関 数 を 用 いずとも グローバル 関 数 を 使 用 するこ とができます 設 定 方 法 1. グローバル 関 数 として 登 録 する js ファイルを 作 成 します 作 成 した js ファイルは 任 意 の 場 所 に 保 存 して ください // 共 通 関 数 作 成 function imsubvariables( valuea, valueb ) { return valuea - valueb; <ソース 例 > 2. conf/system_install.xml ファイルに 以 下 の 内 容 を 加 えます 記 述 方 法 は<global-function-script>グロー バル 関 数 を 定 義 した js ファイルのパス# 実 行 関 数 </tag-script>となっています <ソース 例 > <system-install> <java-script-api> <global-function-script>sample/prog_guide/common_libs/global/sub_variables#imsubvariables </global-function-script> 作 成 者 : 株 式 会 社 NTT データ イントラマート Page 45

intra-mart スクリプト 開 発 モデル プログラミングガイド 3. グローバル 関 数 の 利 用 ファンクション コンテナ 内 からグローバル 関 数 の 呼 び 出 しを 行 います function sub(){ res = imsubvariables(10,3); return res; <ソース 例 > 3.4.2.2 Procedure.define 関 数 Procedure define メソッド void define (String name,object func) JS 関 数 (オブジェクト 等 )を 設 定 します パラメーター String name 設 定 プロパティ 名 称 ( 文 字 列 ) Object func JS 関 数 Procedure.define() メソッドを 使 い グローバル 関 数 として 登 録 すると 多 少 メモリを 消 費 しますが 関 数 をメモリに 保 持 するため 実 行 速 度 は 速 くなります Procedure.define() メソッドの 詳 細 については API リスト アプリケーション 共 通 モジュール の Procedure を 参 照 してください 設 定 方 法 ユーザ 定 義 関 数 を 任 意 の js ファイルに 作 成 し メモリ 上 に 格 納 されるよう 初 期 化 ファイル(pages/src/init.js) に 記 述 をします これによって intra-mart 起 動 時 にユーザ 定 義 関 数 がメモリ 上 に 格 納 され ファンクショ ン コンテナからダイレクトにメモリに 呼 び 出 しがかかるようになります ユーザ 定 義 関 数 の 呼 び 出 しは ファ ンクション コンテナに 記 述 を 行 います Page 46 Copyright 2000-2011 株 式 会 社 NTT データ イントラマート All rights Reserved.

3 Java コンポーネント 群 (im-bizapi)の 利 用 1. 任 意 の js ファイルにユーザ 定 義 関 数 を 格 納 する ここでは 例 として sample/prog_guide/common_libs/global/add_variables.js ファイル に 共 通 関 数 addvariables() を 作 るものとします グローバルユーザ 定 義 関 数 を 格 納 する js ファイルに 以 下 のように Procedure.define()メソッドを 使 用 した 記 述 をします <ソース 例 (add_variables.js)> //ユーザ 定 義 関 数 を js ファイルへ 格 納 する 記 述 // 共 通 関 数 として 登 録 する Procedure.define("addVariables", addvariables); // 共 通 関 数 作 成 function addvariables( valuea, valueb ) { return valuea + valueb; 2. 起 動 時 にメモリ 上 に 格 納 される 設 定 を 行 う ユーザ 定 義 関 数 を 格 納 した js ファイルについて intra-mart 起 動 後 にメモリ 上 に 格 納 されるよう pages/src/init.js ファイル( 初 期 化 ファイル)にその js ファイルを 取 り 込 む 記 述 をします // 共 通 関 数 格 納 ファイルを 取 り 込 む 記 述 /* init.js */ <ソース 例 > // 共 通 関 数 格 納 ファイルの 取 り 込 み include("sample/prog_guide/common_libs/global/add_variables"); 必 ずしも pages/src/init.js 内 に 記 述 しなくても 他 の JavaScript ファイルから 一 度 include()で 取 り 込 まれた 関 数 は 以 後 グローバル 関 数 として 使 用 することができます 3. ファンクション コンテナにユーザ 定 義 関 数 を 呼 び 出 す 記 述 をする ユーザ 定 義 関 数 を 必 要 とするファンクション コンテナに intra-mart 起 動 後 メモリ 上 に 格 納 されたその 関 数 を 呼 び 出 す 処 理 を 記 述 をします ここでは 例 として ファンクション コンテナの sample/prog_guide/common_libs/global/add_val_exe.js フ ァイル で 共 通 関 数 addvariables() を 呼 び 出 すものとします ユーザ 定 義 関 数 を 呼 び 出 すには アプリケーション js ファイルに 以 下 のように 記 述 します <ソース 例 > //ファンクション コンテナにてグローバルユーザ 定 義 関 数 を 呼 び 出 す 記 述 /* sample/prog_guide/common_libs/global/add_val_exe.js */ function add( ) { // 共 通 関 数 の 呼 び 出 し return Procedure.addVariables( 1, 2 ); 作 成 者 : 株 式 会 社 NTT データ イントラマート Page 47

intra-mart スクリプト 開 発 モデル プログラミングガイド 3.4.3 拡 張 <IMART>タグの 作 成 intra-mart 側 で 既 に 用 意 されている<IMART>タグ 以 外 に ユーザが 定 義 し 独 自 の 機 能 を 持 たせた 任 意 の <IMART>タグをを 拡 張 <IMART>タグと 言 います 具 体 的 には <IMART>タグに 対 して 新 しい type 属 性 を 定 義 し その type 属 性 が 要 求 された 時 に 実 際 に 処 理 を 実 行 するタグ 関 数 を 登 録 することで プレゼンテーション ページ 内 で 利 用 できる API を 拡 張 できる 機 能 です (<IMART type="xxx">の xxx の 部 分 をユーザ 独 自 に 定 義 することができます ) 3.4.3.1 Imart.defineType 関 数 拡 張 <IMART>タグは Imart.defineType 関 数 によって 定 義 することが 出 来 ます Imart.defineType 関 数 の 書 き 方 には 2 通 りあり 初 期 起 動 時 に 実 行 できる 場 所 ( 拡 張 <IMART>タグが 呼 び 出 される 前 に 実 行 されるファイル)に 記 述 する 方 法 と system_install.xml 設 定 ファイルに 記 述 する 方 法 があります Imart definetype メソッド static void definetype (String name,function func) パラメータ String name 定 義 名 称 (<IMART>タグの type= に 該 当 する 値 ) Function func 実 行 関 数 設 定 方 法 ( 初 期 起 動 時 実 行 ) Imart.defineType() 関 数 を 記 述 する 場 所 の 一 つに 初 期 起 動 時 の 実 行 ファイルがあげられます これは pages/src/init.js などが 挙 げられ サーバ 起 動 時 に 一 回 だけ 実 行 されるファイルを 指 します そこに Imart.defineType() 関 数 を 記 述 し 実 行 されると Imart オブジェクトに 対 して 情 報 が 登 録 され 以 降 プレ ゼンテーション ページ 内 では いつでも 利 用 可 能 になります 1. 拡 張 <IMART>タグの 実 装 内 容 と Imart.defineType() 関 数 を pages/src/init.js に 書 き 加 えます <init.js> Imart.defineType("imEchoLoop",im_echo_loop); function init(request) { function im_echo_loop(oattr,oinner){ var time = new Number(oAttr.time); var str = oattr.str; var index = new Array(); var res = ""; for(var i=0;i<time;i++){ res += str; res += "<br>"; return res; サーバ 起 動 時 に この Imart.defineType() 関 数 が 呼 ばれ 拡 張 <IMART>タグが 登 録 されます この 拡 張 <IMART>タグ 実 行 関 数 が 返 却 した 文 字 列 が HTML ソースとしてブラウザに 送 信 されることになります また 必 ず 文 字 列 を 返 却 しなければなりません Page 48 Copyright 2000-2011 株 式 会 社 NTT データ イントラマート All rights Reserved.