intra-mart Accel Platform — IM-Repository拡張プログラミングガイド   初版  

Similar documents
intra-mart Accel Platform — イベントナビゲータ 開発ガイド   初版  

intra-mart Accel Platform — イベントナビゲータ 開発ガイド   初版   None

intra-mart Accel Platform — IM-BloomMaker プログラミングガイド   初版  

intra-mart Accel Platform — 外部ソフトウェア接続モジュール 仕様書   第3版  

intra-mart Accel Platform — IM-共通マスタ スマートフォン拡張プログラミングガイド   初版  

intra-mart Accel Platform

intra-mart Accel Platform — 招待機能プログラミングガイド   初版  

intra-mart Accel Platform — OData for SAP HANA セットアップガイド   初版  

intra-mart Accel Platform — Slack連携モジュール 利用ガイド   初版  

intra-mart Accel Platform

Brekeke PBX - Version 2.1 ARSプラグイン開発ガイド

SpringSecurity

intra-mart Accel Platform — アクセスコンテキスト 拡張プログラミングガイド   第2版  

プログラミング基礎I(再)

intra-mart WebPlatform/AppFramework

intra-mart Accel Platform — ViewCreator ユーザ操作ガイド   第6版  

intra-mart Accel Platform — Office 365 連携プログラミングガイド   初版  

Microsoft Word - Android_SQLite講座_画面800×1280

intra-mart Accel Platform

intra-mart Accel Platform

— intra-mart Accel Platform セットアップガイド (WebSphere編)   第7版  

intra-mart Accel Platform — IM-LogicDesigner拡張プログラミングガイド   初版  

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y 小幡智裕

intra-mart Accel Collaboration — ファイルライブラリ ユーザ操作ガイド   第3版  

— intra-mart Accel Platform IM-LogicDesigner拡張プログラミングガイド   初版   None

Java演習(4) -- 変数と型 --

2. データ構造ヒープに保存するデータは 番号付けられて保存される 従って リスト L として保存することとする 3. アルゴリズム 3.1. 要素の追加新しい要素の追加は リストの終端に置くことで開始する つまり 最下層の一番右 または新たに最下層を生成してその一番左となる この後 この要素を正し

Microsoft PowerPoint - ruby_instruction.ppt

intra-mart Accel Collaboration — Collaboration共通 ユーザ操作ガイド   第7版  

intra-mart Accel Platform — 外部ソフトウェア接続モジュール 仕様書   第2版  

intra-mart Accel Documents

intra-mart Accel Collaboration — ファイルライブラリ ユーザ操作ガイド   第5版  

1. はじめに 二分木ヒープ 様々なアルゴリズムにおいて ある要素の集合またはリストから 最小 な要素を取り 出す必要がある そのような場合に使われる標準的データ構造が二分木ヒープ (binary heap) である あるオブジェクトO を考える そのオブジェクトは ラベル O. label と値

目的 泡立ち法を例に Comparableインターフェイスの実装 抽象クラスの利用 型パラメタの利用 比較 入替 の回数を計測

1.SqlCtl クラスリファレンス SqlCtl クラスのリファレンスを以下に示します メソッドの実行中にエラーが発生した場合は標準エラー出力にメッセージを出力します (1)Connect() メソッド データベースへ connect 要求を行います boolean Connect(String

第 2 章インタフェース定義言語 (IDL) IDL とは 言語や OS に依存しないインタフェース定義を行うためのインタフェース定義言語です CORBA アプリケーションを作成する場合は インタフェースを定義した IDL ファイルを作成する必要があります ここでは IDL の文法や IDL ファイ

ご利用のコンピュータを設定する方法 このラボの作業を行うには 事前設定された dcloud ラボを使用するか 自身のコンピュータをセットアップします 詳細については イベントの事前準備 [ 英語 ] とラボの設定 [ 英語 ] の両方のモジュールを参照してください Python を使用した Spar

Exam : 1z1-809-JPN Title : Java SE 8 Programmer II Vendor : Oracle Version : DEMO Get Latest & Valid 1z1-809-JPN Exam's Question and Answers 1 from Ac

基礎計算機演習 実習課題No6

CONTEC DIOプロバイダ ユーザーズガイド

intra-mart Accel Platform — OData 連携チュートリアルガイド   初版  

K227 Java 2

Java の ConcurrentHashMap における同期化 バッドケースとその対処法 2013 年 9 月湊隆行 1. はじめに表 1.1 に示すように Java の Collections Framework には 3 つの世代があります バージョン 1.0 から存在するレガシー API バ


Java講座

--- サーバ側処理 Java servlet の例 // 通常の Java servlet での POST で受信と同じ protected void dopost(httpservletrequest request, HttpServletResponse response) throws S

Prog2_12th

Microsoft PowerPoint ppt

人工知能入門

intra-mart Accel Platform — TableMaintenance ユーザ操作ガイド   第8版  

IM-BPM for Accel Platform — IM-BPM 設定ファイルリファレンス   第3版  

JAVA とテンプレート

intra-mart Accel Platform — OAuth認証モジュール 仕様書   初版  

Prog1_6th

V8.1新規機能紹介記事

新・明解Java入門

— OpenRulesモジュール 2017 Summer リリースノート   初版  

intra-mart マスカット連携ガイド

JavaプログラミングⅠ

Java プログラミング Ⅰ 3 回目変数 変数 変 数 一時的に値を記憶させておく機能型 ( データ型 ) と識別子をもつ 2 型 ( データ型 ) 変数の種類型に応じて記憶できる値の種類や範囲が決まる 型 値の種類 値の範囲 boolean 真偽値 true / false char 2バイト文

Microsoft Word _VBAProg1.docx

データアダプタ概要

デジタル表現論・第4回

基本情報STEP UP演習Java対策

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~

intra-mart Accel Platform — TableMaintenance ユーザ操作ガイド   第7版   None

IM-SecureBlocker

— OpenRulesモジュール 2017 Summer リリースノート   第2版  

プログラミング入門1

前ページからの続き // テキストボックス02 id 属性で取得 // id 属性で取得する場合は一意に決まるので 何番目かの指定は不要 var textbox02elem = document.getelementbyid("text_box02_id"); if ("001" == statee

e10s におけるプロセス間通信の基本 219 HACK #34 Components.manager.removeBootstrappedManifestLocati on() function shutdown(adata, areason) { const IOService =

intra-mart im-JavaEE Framework

プロバイダ ユーザーズガイド

intra-mart im-JavaEE Framework

Java プログラミング Ⅰ 3 回目変 数 今日の講義講義で学ぶ内容 変数とは 変数の使い方 キーボード入力の仕方 変 数 変 数 一時的に値を記憶させておく機能 変数は 型 ( データ型 ) と識別子をもちます 2 型 ( データ型 ) 変数に記憶する値の種類変数の型は 記憶できる値の種類と範囲

FW ファイルアップロード ダウンロード機能利用ガイド Version 年 9 月 21 日富士通株式会社 i All Right Reserved, Copyright FUJITSU LIMITED

グラフの探索 JAVA での実装

WebOTXマニュアル

E4X in Firefox nanto_vi (TOYAMA Nao)

ALG ppt

Android Layout SDK プログラミング マニュアル

JavaScript演習

WPF アプリケーションの 多言語切替

untitled

JavaScript 演習 2 1

ボタンイベントアプリイベント処理を含むアプリとして, ボタンをもち, ボタンを押すと文字列を表示するアプリを作る. このアプリは,HelloWorld アプリを改造して作成するため, アプリ作成の途中からの手順を示す. 1. ボタンの設置 (1) レイアウトにボタンを追加するパレットの フォーム ウ

デジタル表現論・第6回

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

intra-mart Accel Platform — 標準テーマカスタマイズ 操作ガイド   第3版  

intra-mart Accel Platform — intra-mart Sphinxドキュメント ビルド手順書   第2版  

intra-mart WebPlatform/AppFramework

WTM2019SingleSignOn

intra-mart Accel Platform — 標準テーマカスタマイズ 操作ガイド   第4版  

intra-mart im-J2EE Framework

myx_backup Ver 1.10のPHP7対応

intra-mart Accel Collaboration — アンケート 管理者操作ガイド   第2版  

Dolteng Scaffoldに対する機能追加とマスタ-ディテールScaffoldの紹介

情報システム設計論II ユーザインタフェース(1)

2-1 KeyEvent 概要 KeyEvent クラスはアンドロイド端末のキーに対するイベントの定数 基本メソッドを提供するオブジェクトです クラス図は次のようになっています java.lang.object android.view.keyevent 2-2 KeyEvent.Callback

1_cover

Transcription:

Copyright 2018 NTT DATA INTRAMART CORPORATION 1 Top

目次 1. 改訂情報 2. はじめに 2.1. 本書の目的 2.2. 対象読者 2.3. サンプルコードについて 2.4. 本書の構成 3. 辞書項目 API 3.1. 最新バージョン 3.1.1. 最新バージョンの辞書を取得する 3.2. 辞書項目 3.2.1. 辞書項目を取得する 3.2.2. 辞書項目のエイリアスを取得する 3.3. エイリアス 3.3.1. エイリアスを取得する 3.4. 用途と制約 3.4.1. 用途の参照 3.4.2. 制約の確認方法 3.4.3. 制約用途に指定した制約に適合するかどうかを確認する 3.5. バリデーション 3.5.1. バリデーションを利用する 4. 列挙型 API 4.1. 列挙型 4.1.1. 列挙型を取得する 4.2. 列挙型検索 4.2.1. 列挙型を検索する 4.2.2. 結果を返却する 2

改訂情報 変更年月日 変更内容 2018-04-01 初版 3

はじめに 本書の目的 本書は IM-Repository for Accel Platform( 以下 IM-Repository) におけるそれぞれの機能を拡張する仕組の詳細および 基本的な使用方法も併せて説明します 説明範囲は以下のとおりです 辞書項目 APIの使用方法について列挙型 APIの使用方法について 対象読者 本書では以下のユーザを対象としています IM-Repository を利用して処理を実装したい IM-Repository と連携した機能を実装したい サンプルコードについて 本書に掲載されているサンプルコードは可読性を重視しており 性能面や保守性といった観点において 必ずしも適切な実装ではありません 開発においてサンプルコードを参考にされる場合には 上記について十分に注意してください 本書の構成 辞書項目 API 辞書項目 APIについて説明します 列挙型 API 列挙型 APIについて説明します 4

辞書項目 API 辞書項目 API とは IM-Repository 上で管理される辞書項目は バージョン管理および 項目内に用途や制約といった様々 な定義が存在します 本項ではこの辞書項目の情報を取得する API の利用方法を説明します 最新バージョン 項目 最新バージョンの辞書を取得する 最新バージョンの辞書を取得する REST-API メソッド URI GET % ベース URL%/api/repository/dictionary/current // 最新バージョンの辞書を取得 Dictionary dictionary = RepositoryServiceProvider.getInstance().getDictionaryService().getCurrent(); // 辞書のバージョンを確認する dictionary.getversion(); // 辞書項目を検索する Criteria criteria = new Criteria(); criteria.setname("% 表示名 %"); dictionary.search(criteria); 辞書項目 項目 辞書項目を取得する 辞書項目のエイリアスを取得する 5

辞書項目を取得する Dictionary dictionary = RepositoryServiceProvider.getInstance().getDictionaryService().getCurrent(); // 辞書項目を取得する Item item = dictionary.find(itemid.of("% 辞書項目のID%")); if (item!= null) { // 辞書項目名を取得する item.getname(); 辞書項目のエイリアスを取得する Dictionary dictionary = RepositoryServiceProvider.getInstance().getDictionaryService().getCurrent(); // 指定された辞書項目のエイリアスを取得する List<Alias> alias = dictionary.findalias(itemid.of("% 辞書項目の ID%")); エイリアス 項目 エイリアスを取得する エイリアスを取得する Dictionary dictionary = RepositoryServiceProvider.getInstance().getDictionaryService().getCurrent(); // エイリアスを取得する Alias alias = dictionary.find(aliasid.of("% エイリアスのID%")); if (alias!= null) { // エイリアス名を取得する alias.getname(); 6

用途と制約 項目 用途の参照 制約の確認方法 制約用途に指定した制約に適合するかどうかを確認する 辞書項目やエイリアスそのものは メタデータとして存在するだけで利用価値はありません これらに用途を指定することで 単純なメタデータではなく様々なアプリケーションから利用することができる存在に成ります 現在用意している用途は データ 制約 の 2 種類です データ用途は 対象のメタデータの形式 例えばデータベースのスキーマを生成するための情報などを 管理することができます 制約用途は 対象のメタデータのバリデーションを行うための情報を管理することができます 用途の参照 REST-API メソッド GET URI % ベース URL%/api/repository/dictionary/usages Dictionary dictionary = RepositoryServiceProvider.getInstance().getDictionaryService().getCurrent(); // 辞書項目 エイリアスの順に用途を取得する Item item = dictionary.find(itemid.of("% 辞書項目の ID%"); Alias alias = dictionary.find(aliasid.of("% エイリアスの ID%"); Usages usages = null; if (item!= null) { usages = item.getusages(); else if (alias!= null) { usages = alias.getusages(); 7

制約の確認方法 REST-API メソッド GET URI % ベース URL%/api/repository/dictionary/usages Dictionary dictionary = RepositoryServiceProvider.getInstance().getDictionaryService().getCurrent(); // 辞書項目 エイリアスの順に用途を取得する Item item = dictionary.find(itemid.of("% 辞書項目の ID%"); Alias alias = dictionary.find(aliasid.of("% エイリアスの ID%"); Usages usages = null; if (item!= null) { usages = item.getusages(); else if (alias!= null) { usages = alias.getusages(); // 制約の一覧を取得する RestrictionUsage restrictionusage = usages.get(" 制約用途の ID 文字列 "); List<Restriction> list = restrictionusage.getrestrictions(); 制約用途に指定した制約に適合するかどうかを確認する 辞書項目の設定 あらかじめ 次のような設定を行います これら以外の項目は任意に指定してください 辞書項目 ID 用途 数値制約 sample-dictionary-item 制約にチェックを付ける 制約を追加で追加しておく 最小値 0 最大値 100 最小整数桁 最大整数桁 最小小数桁 空 空 空 8

最大小数桁 空 次のような実装を行うことで 上記の制約に基づいたバリデーションを行うことができます 9

/** * 辞書項目 IDと値の組み合わせで以下のような結果が返ります */ public void somemethod() throws DictionaryServiceException { this.validate("sample-dictionary-item", 0); // true this.validate("sample-dictionary-item", 100); // true this.validate("sample-dictionary-item", -1); // false this.validate("sample-dictionary-item", 101); // false /** * 指定した辞書項目の制約を用いて 対象の値が適合するかどうかを確認します * * @param itemid 辞書項目 ID * @param target 対象の値 ここでは数値が制約に合致するかどうかを確認することとします * @return 適合する場合は true を 適合しない場合は false を返します * @throws DictionaryServiceException 辞書サービスでエラーが発生した場合にスローされます */ public boolean validate(final String itemid, final Double target) throws DictionaryServiceException { final Dictionary dictionary = RepositoryServiceProvider.getInstance().getDictionaryService().getCurrent(); final Item item = dictionary.find(itemid.of(itemid)); if (item!= null) { final Usages usages = item.getusages(); final RestrictionUsage restrictionusage = usages.get(usageid.of(restrictionusage.id)); for (final Restriction restriction : restrictionusage.getrestrictions()) { // validate の第一引数はバリデーションエラーのメッセージに含める名称です // 現在提供している制約のエラーメッセージでは使用されていません final ValidateResult validationresult = restriction.validate(" 名前 ", target); if (validationresult.getinvalidparams().size() > 0) { return false; return true; バリデーション 項目 バリデーションを利用する バリデーションを利用する 制約用途に指定した制約に適合するかどうかを確認するの設定を行っている場合 次のような実装を行 うことでリクエストのパラメータに対してバリデーションを行うことができます 10

JSR 303 Bean Validationに準拠したカスタムバリデーションとして 辞書項目の制約に基づいたものを提供します @Dictionary(id= xxx ) アノテーションを付与することにより 辞書項目に定義されている制約を適用することが可能です この例では SampleForm の foo に対して 0 から 100 までの範囲内であるという制約が適用されます package sample; import jp.co.intra_mart.foundation.repository.metadata.dictionary.validator.dictionary; public class SampleForm { // 辞書項目 IDをアノテーションに指定する // id = 辞書項目 IDまたはエイリアスID name = 項目名 @Dictionary(id = "sample-dictionary-item", name = "foo") private Long foo; スクリプト開発モデル Jssp Validator のカスタムバリデーションとして 辞書項目の制約に基づいたものを提供します バリデーションルールのキーに dictionary を 値に辞書項目 IDを指定することにより 辞書項目に定義されている制約を適用することが可能です この例ではリクエストパラメータの foo に対して 0 から 100 までの範囲内であるという制約が適用されます validation.js var init = { 'foo': { // リクエストパラメータ名 caption: "CAP.Z.EXAMPLE.NAME", // エラーメッセージのキャプション dictionary: 'sample-dictionary-item' sample.js 11

let foo; /** * @validate validation#init * @onerror handleerror */ function init(request) { foo = request.foo; function handleerror(request, validationerrors) { var param = { errors: validationerrors.getmessages() ; forward("error", param); コラム現在クライアント側のバリデーションを行うことはできません 12

列挙型 API 列挙型 API とは label-value 形式の列挙データを統合的に管理する機能を提供します また 辞書データと連動させ 辞書項目の値としてこの列挙データからのみ選べるといった連携を行います 本項ではこの列挙型の情報を取得するAPIの利用方法を説明します 列挙型 項目 列挙型を取得する 列挙型を取得する REST-API メソッド URI GET % ベース URL%/api/repository/metadata/enumeration // 列挙型を取得する EnumerationService enumerationservice = RepositoryServiceProvider.getInstance().getEnumerationService(); Enumerations enumerations = enumerationservice.getenumerations(); 列挙型検索 項目 列挙型を検索する 結果を返却する 列挙型を検索する スクリプト開発モデル 列挙型検索画面を呼び出す方法は 2 通りあります 13

列挙を全て呼び出したい場合( 1) sample.js function opensearchenumerationdialog() { // 列挙型検索画面を呼び出します window.open('% ベースURL%/repository/search/metadata/enumeration'); 列挙が有効化のデータのみを呼び出したい場合 ( 2) sample.js function opensearchenumerationdialog() { // 列挙型検索画面を呼び出します window.open('% ベースURL%/repository/search/metadata/enumeration?enabled=true'); コラム 下記のようにコールバック関数を利用することもできます ( 1) の場合 ( % ベースURL%/repository/search/metadata/enumeration#% コールバック関数 % ) ( 2) の場合 ( % ベースURL%/repository/search/metadata/enumeration? enabled=true#% コールバック関数 % ) コールバック関数を指定しない場合 デフォルトのコールバック関数は onenumerationselected です 結果を返却する スクリプト開発モデル sample.js window.onenumerationselected = function (selected) { if (selected) { // 列挙 IDを取得します var enumerationid = selected.identify; // 列挙名を取得します var enumerationname = selected.name.default; 14

コラム コールバック関数を指定する場合 onenumerationselectedを指定したコールバック関数に変更してください 引数のオブジェクトの説明をします selected 取得できる情報は 以下です プロパティ 説明 型 identify 型を含まない列挙 ID string parentid 親のID string name( 1) 列挙名 object description( 1) 説明 object enumerationitems( 2) 列挙項目 array enabled 列挙の有効化を示すフラグ boolean label ツリーの表示名 string ( 1)name description には多言語情報が格納されており 構成は以下です プロパティ 説明 型 default 標準 string ja 日本語 string en 英語 string zh_cn 中国語 ( 簡体字 ) string ( 2)enumerationItems には以下の要素が格納されています プロパティ 説明 型 label( 3) 列挙項目表示名 object value 値 string ( 3)label も多言語情報が格納されています 構成は name description と同様です 15

コラム それぞれのプロパティを取得する場合のサンプルは以下の通りです // 列挙名 ( 日本語 ) を取得する場合 var enumerationname = selected.name.ja; // 説明 ( 英語 ) を取得する場合 var description = selected.description.en; // 列挙項目の 1 件目の列挙項目表示名 ( 標準 ) を取得する場合 var enumerationname = selected.enumerationitems[0].label.default; 16