QuickCodeのスペックの詳細および参考情報

Actionオブジェクトのプロパティ、メソッド、イベント

プロパティ

プロパティ名

説明

targetview

Actionを実行するViewコンポーネントを設定するプロパティです。

メソッド

メソッド名

説明

getContents

Action実行時に伝達されるcontentsオブジェクトもしくはkeyに該当するvalueオブジェクトを返します。

Action.getContents([strKey])

- strKeyパラメータを設定しない場合、contentsオブジェクトを返します。

- strKeyパラメータは、「model」、「extra」のいずれかを設定できます。

getTargetView

targetviewプロパティ値に該当するViewコンポーネントを返します。

Action.getTargetView()

run

Actionを実行します。

Action.run()

イベント

イベント名

説明

onsuccess

runメソッドの実行に成功した場合のTrigger callback処理のためのイベントです。

onsuccess(obj:nexacro.Action,e:nexacro.ActionEventInfo);

onerror

runメソッドの実行に失敗した場合のTrigger callback処理のためのイベントです。

onerror(obj:nexacro.Action,e:nexacro.ActionEventInfo);

Trigger typeに使用できる項目情報

例題では、ボタンをクリックすると、triggerが動作するようにコンテキストメニューから「click」項目を選択しました。「click」項目を選択するのは、Buttonコンポーネントのonclickイベント関数を作成することと似ています。下記のリストは使用可能なtriggerのタイプを表示します。

タイプ

イベント

説明

Click

onclick

対象オブジェクト(コンポーネント)のマウスクリック時に発生します。

Row Change

onrowposchanged

Datasetオブジェクトのrowpositionの変更時に発生します。

Value Change

oncolumnchanged

Datasetオブジェクトのカラム値の変更時に発生します。

Action Success

onsuccess

選択したActionオブジェクトの実行に成功した時に発生します。

Trigger View項目はFormオブジェクトを選択し、Trigger Object項目はActionオブジェクトを選択します。

Action Fail

onerror

選択したActionオブジェクト実行に失敗した時に発生します。

Trigger View項目はFormオブジェクトを選択し、Trigger Object項目はActionオブジェクトを選択します。

Model Load Success

onmodelloadsuccess

Datasetオブジェクトのデータのロード時に発生します。

Model Load Fail

onmodelloadfail

Datasetオブジェクトのデータのロードの失敗持に発生します。

(データがない場合でも発生します。)

Form init

onload

Formオブジェクトをロードすると発生します。

External Input

onextendedcommand

DeviceAdaptorsに定義されたデバイスでイベントが伝達された時に発生します。

Actionobujkeをコンポーネント/オブジェクトの上にドラッグした場合に表示されるコンテキストメニューは下記の通りです。

コンポーネント/オブジェクト

コンテキストメニュー

コンポーネント

(Viewコンポーネントを除く)

(none)

Click

External Input

Viewコンポーネント

(none)

Click (Component)

Model Load Success

Model Load Fail

External Input

Action

(none)

Action Success

Action Fail

External Input

Datasetオブジェクト

(none)

Row Change

Value Change

Model Load Success

Model Load Fail

External Input

Form

(none)

Form Init

External Input

Trigger condition予約語とサンプル

Action接続の際にTrigger発生条件を設定できます。使用可能な予約語は、下記のとおりです。

予約語

説明

triggerview

Action設定時にTrigger項目のtriggerviewに設定したオブジェクトです。

triggerobj

Action設定時にTrigger項目のtriggerobjに設定したオブジェクトです。

form

Triggerが含まれた上位Formオブジェクトです。

下記の方法で適用できます。

triggerview.name=='view_search' && triggerobj.name == 'btn_Trigger00_00' && form.name == 'sample_MasterDetail_V'

triggerobjの特定プロパティを条件で適用できます。例えば、Typeが「Action Success」の場合には、triggerobjがActionです。当該Actionが処理されるとき、プロパティ値によって次のActionを処理するかどうかを判断できます。

triggerobj.alerttype == 'true'

fn_GetViewGenerationResultの戻り値のJSON形式

fn_GetViewGenerationResult関数の呼び出し時に渡されるcontentsパラメータや関数の呼び出し後に返される値は、下記のようなJSON形式で処理されます。contentsパラメータは、現在の画面のXMLコードをJSONに変換して渡し、関数の呼び出し後に返されるJSONコードはnexacro studioでXMLコードに変換して画面に反映されます。

contentsパラメータはnexacro studioの内部で自動的に変換されますが、戻り値のJSONコードはfn_GetViewGenerationResult関数内で決まった形式に従って作成する必要があります。

基本形式

返されるJSONコードは、Viewコンポーネント内の画面を構成し、Datasetオブジェクトやバインドアイテム情報、スクリプトなどを設定します。基本形式は下記の通りです。

XML

JSON

<View>
    <Layouts>
        <Layout/>
    </Layouts>
    <InitValue/>
    <Objects/>
    <Bind/>
    <Script/>
</View>

{
    "View": {
        "Model": [
            {
                "fieldid": "",
                "Components": [
                    {}
                ]
            }
        ],
        "InitValue": [
            {}
        ],
        "Objects": [
            {}
        ],
        "Bind": [
            {}
        ],
        "Script": {
        }
    }
}

使用しない項目は除外することができます。例えば、Datasetオブジェクトを1つのみ持つ構造であれば、JSONコードでは下記のように処理することができます。

{
	"View": {
		"Objects":[
			{}
		]
	}
}

View TemplateはDefaultレイアウトのみサポートします。

レイアウトを追加したFormでView Templateを使用する場合は、fn_GetViewGenerationResult関数で情報を処理できないことがあります。

fn_GetViewGenerationResult関数の呼び出し後に生成されるXMLファイル内には、ModelInfoやViewTemplateInfoタグが追加で生成されます。該当の領域は、紐づいたModel、View Template関連情報を管理するコードであるため、任意で変更した場合はModelとViewテンプレートによる画面UIの作成時に以前の設定情報を取得できないことがあります。

変換ルール

fn_GetViewGenerationResultの戻り値のJSONコードにより生成されるものは、nexacro studioで使用するXMLタグです。下記のようなルールに従って、各タグと接続されるJSONコードを作成します。

最上位のViewコンポーネントに配置されるコンポーネントのModelプロパティの下に構成します。

Viewコンポーネントに配置されるコンポーネントは、接続されたfieldid情報を持っています。従って、Modelプロパティの下にfieldidプロパティとComponentsプロパティを持ち、実際のコンポーネントはComponentsプロパティの下に構成します。

コンポーネントと接続されたfieldidがない場合、Modelプロパティは1つのJSONオブジェクトのみ持ってComponentsプロパティの下にコンポーネントを並べます。接続されたFieldidが2つ以上である場合は、下記のようにfieldid数だけJSONオブジェクトを持ってXML作成時にModelInfoの下に関連情報を作成します。

XML

JSON

<View>
    <Layouts>
        <Layout>
            <Button id="Btn01"/>
            <Button id="Btn02"/>
    </Layouts>
    <ModelInfo>
        <Components>
            <Component id="Btn01" fieldid="ID"/>
            <Component id="Btn02" fieldid="DATA"/>
        </Components>
    </ModelInfo>
</View>

{
    "View": {
        "Model": [
            {
                "fieldid": "ID",
                "Components": [
                    {
                        "tag": "Button",
                        "attribute": {
                            "id": "Btn01"
                        }
                    }
                ]
            },
            {
                "fieldid": "DATA",
                "Components": [

                    {
                        "tag": "Button",
                        "attribute": {
                            "id": "Btn02"
                        }

                    }                ]
            }        ]
    }
}

1つのタグは、1つのJSONオブジェクトで構成されます。

タグ名はJSONオブジェクトのtagプロパティで、タグプロパティはattributeプロパティで処理します。

<タグ名 プロパティ1="プロパティ1の値" プロパティ2="プロパティ2の値" プロパティ3="プロパティ3の値"/>
{
  "tag": "タグ名",
  "attribute": {
    "プロパティ1": "プロパティ1の値",
    "プロパティ2": "プロパティ2の値",
    "プロパティ3": "プロパティ3の値"
  }
}

下記のように、コンポーネントやオブジェクトに関係なく、1つのタグは1つのJSONオブジェクトで処理されます。

XML

JSON

<Dataset id="Dataset00"/>


{
    "tag":"Dataset",
    "attribute":{
        "id":"Dataset00"
    }
}
<Button id="Button00" 
    taborder="0"
    text="Button00" 
    left="209" 
    top="12" 
    width="90" 
    height="30" 
    onclick="View00_Button00_onclick"/>
{
    "tag": "Button",
    "attribute": {
        "id": "Button00",
        "taborder": "0",
        "text": "Button00",
        "left": "209",
        "top": "12",
        "width": "90",
        "height": "30",
        "onclick": "View00_Button00_onclick"
    }
}
<BindItem id="item0" 
    compid="Button00" 
    propid="text" 
    datasetid="Dataset00" 
    columnid="Column0"/>
{
    "tag": "BindItem",
    "attribute": {
        "id": "item0",
        "compid": "Button00",
        "propid": "text",
        "datasetid": "Dataset00",
        "columnid": "Column0"
    }
}

下位タグは、上位タグのタグ名と同じJSON配列に構成されます。

下位コンポーネントを持っているコンテナコンポーネントの場合は、tag、attributeプロパティと同じレベルのコンポーネント名と同じ名前のプロパティを持ち、プロパティ値はJSON配列で処理されます。

コンテナコンポーネントでなくても、Gridコンポーネントのように下位タグ構造の場合は、同じ方式で処理します。

<上位タグ名>
	<下位タグ名 プロパティ1="プロパティ1の値" プロパティ2="プロパティ2の値" プロパティ3="プロパティ3の値"/>
</上位タグ名>
{
	"tag": "上位タグ名",
	"attribute": {
	},
	"上位タグ名": [
		{
			"tag": "下位タグ名",
			"attribute": {
				"プロパティ1": "プロパティ1の値",
				"プロパティ2": "プロパティ2の値",
				"プロパティ3": "プロパティ3の値"
			}
		}
}

下記の例では、分かりやすくするためにコンポーネントの一部プロパティを省略しています。

XML

JSON

<Div id="Div00" text="Div00">
    <Layouts>
        <Layout>
            <Button id="Button00" text="Button00"/>
        </Layout>
    </Layouts>
</Div>
{
    "tag": "Div",
    "attribute": {
        "id": "Div00"
    },
    "Div": [
        {
            "Components": [
                {
                    "tag": "Button",
                    "attribute": {
                        "id": "Button00",
                        "text": "Button00"
                    }
                }
            ]
        }
    ]
}
<Bind>
    <BindItem id="item0" compid="Button00" propid="text" datasetid="Dataset00" columnid="Column0"/>
    <BindItem id="item1" compid="Button01" propid="text" datasetid="Dataset00" columnid="Column0"/>
</Bind>
{
    "tag": "Bind",
    "Bind": [
        {
            "tag": "BindItem",
            "attribute": {
                "id": "item0",
                "compid": "Button00",
                "propid": "text",
                "datasetid": "Dataset00",
                "columnid": "Column0"
            }
        },
        {
            "tag": "BindItem",
            "attribute": {
                "id": "item1",
                "compid": "Button01",
                "propid": "text",
                "datasetid": "Dataset00",
                "columnid": "Column0"
            }
        }
    ]
}
<Dataset id="Dataset00">
    <ColumnInfo>
        <Column id="Column0" type="STRING" size="256"/>
    </ColumnInfo>
    <Rows>
        <Row/>
    </Rows>
</Dataset>
{
    "tag": "Dataset",
    "attribute": {
        "id": "Dataset00"
    },
    "Dataset": [
        {
            "tag": "ColumnInfo",
            "ColumnInfo": [
                {
                    "tag": "Column",
                    "attribute": {
                        "id": "Column0",
                        "type": "STRING",
                        "size": "256"
                    }
                }
            ]
        },
        {
            "tag": "Rows",
            "Rows": [
                {
                    "tag": "Row"
                }
            ]
        }
    ]
}

Gridコンポーネントの場合は、画面に表示する形式を指定するために、入れ子状の下位タグを持っています。

XML

JSON

<Grid id="Grid00" binddataset="Dataset00">
    <Formats>
        <Format id="default">
            <Columns>
                <Column size="80"/>
            </Columns>
            <Rows>
                <Row size="24" band="head"/>
                <Row size="24"/>
            </Rows>
            <Band id="head">
                <Cell text="Column0"/>
            </Band>
            <Band id="body">
                <Cell text="bind:Column0"/>
            </Band>
        </Format>
    </Formats>
</Grid>
{
    "tag": "Grid",
    "attribute": {
        "id": "Grid00",
        "binddataset": "Dataset01"
    },
    "Grid": [
        {
            "tag": "Formats",
            "Formats": [
                {
                    "tag": "Format",
                    "attribute": {
                        "id": "default"
                    },
                    "Format": [
                        {
                            "tag": "Columns",
                            "Columns": [
                                {
                                    "tag": "Column",
                                    "attribute": {
                                        "size": "80"
                                    }
                                }
                            ]
                        },
                        {
                            "tag": "Rows",
                            "Rows": [
                                {
                                    "tag": "Row",
                                    "attribute": {
                                        "size": "24",
                                        "band": "head"
                                    }
                                },
                                {
                                    "tag": "Row",
                                    "attribute": {
                                        "size": "24"
                                    }
                                }
                            ]
                        },
                        {
                            "tag": "Band",
                            "attribute": {
                                "id": "head"
                            },
                            "Band": [
                                {
                                    "tag": "Cell",
                                    "attribute": {
                                        "text": "Column0"
                                    }
                                }
                            ]
                        },
                        {
                            "tag": "Band",
                            "attribute": {
                                "id": "body"
                            },
                            "Band": [
                                {
                                    "tag": "Cell",
                                    "attribute": {
                                        "text": "bind:Column0"
                                    }
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    ]
}

Gridコンポーネントは入れ子状の下位タグで構成されているため、JSONコードが複雑に見えますが、変換規則は同じです。上記の表にあるGridコンポーネントをタグ別に分解した結果は下記の通りです。

XML

JSON

<Grid id="Grid00" binddataset="Dataset00">
    <Formats>
    </Formats>
</Grid>
{
    "tag": "Grid",
    "attribute": {
        "id": "Grid00",
        "binddataset": "Dataset01"
    },
    "Grid": [
        {
            "tag": "Formats"
        }
    ]
}
<Formats>
    <Format id="default">
    </Format>
</Formats>
{
    "tag": "Formats",
    "Formats": [
        {
            "tag": "Format"
        }
    ]
}
<Format id="default">
    <Columns>
    </Columns>
    <Rows>
    </Rows>
    <Band id="head">
    </Band>
</Format>
{
    "tag": "Format",
    "attribute": {
        "id": "default"
    },
    "Format": [
        {
            "tag": "Columns"
        },
        {
            "tag": "Rows"
        },
        {
            "tag": "Band",
            "attribute": {
                "id": "head"
            }
        }
    ]
}
<Columns>
    <Column size="80"/>
</Columns>
{
    "tag": "Columns",
    "Columns": [
        {
            "tag": "Column",
            "attribute": {
                "size": "80"
            }
        }
    ]
}

下記のように、各タグ単位でJSONオブジェクト、もしくはJSONオブジェクトの配列を作成する関数を作成して使用することもできます。GridやDatasetオブジェクトのようにフィールド情報に基づいて処理する必要がある領域は、別途関数でフィールド情報を送信して処理すると、ソースコードの可読性が高くなります。

{
	"tag": "Dataset",
	"attribute": { "id": "ds_sample" },
	"Dataset": [
		{
			"tag": "ColumnInfo",
			"ColumnInfo": fn_GetDsColumns(oFieldArray)
		},
		{
			"tag": "Rows",
			"Rows": fn_GetDsRows(oFieldArray)
		}
	]
}

変換規則の例外(コンテナコンポーネント)

View TemplateはDefaultレイアウトのみサポートします。従って、コンテナコンポーネントはLayouts、Layoutタグの代わりにComponentsという一つのプロパティで対応できるようにサポートします。

XML

JSON

<Div id="Div00" text="Div00">
    <Layouts>
        <Layout>
            <Button id="Button00" text="Button00"/>
        </Layout>
    </Layouts>
</Div>
{
    "tag": "Div",
    "attribute": {
        "id": "Div00"
    },
    "Div": [
        {
            "Components": [
                {
                    "tag": "Button",
                    "attribute": {
                        "id": "Button00",
                        "text": "Button00"
                    }
                }
            ]
        }
    ]
}

下記のように、1つのタグを1つのJSONオブジェクトで構成する基本変換規則に従うこともできます。Componentsプロパティの代わりにLayouts、Layoutプロパティを使用します。

XML

JSON

<Div id="Div00" text="Div00">
    <Layouts>
        <Layout>
            <Button id="Button00" text="Button00"/>
        </Layout>
    </Layouts>
</Div>
{
    "tag": "Div",
    "attribute": {
        "id": "Div00"
    },
    "Div": [
        {
            "tag": "Layouts",
            "Layouts": [
                {
                    "tag": "Layout",
                    "Layout": [
                        {
                            "tag": "Button",
                            "attribute": {
                                "id": "Button00",
                                "text": "Button00"
                            }
                        }
                    ]
                }
            ]
        }
    ]
}

イベント処理

イベントはActionを通じて処理することもできますが、戻り値にScriptタグを追加して処理することもできます。このような場合には、Viewコンポーネントの内に含まれているスクリプトを呼び出すように設定する必要があります。

nexacro studioでイベント処理時にFormスクリプトに登録されるのとは異なり、Viewコンポーネントのinnerformスクリプトとして処理されるため、onclickイベントの作成時に該当するViewコンポーネントのIDでアクセスする必要があります。

"イベント名": {ViewコンポーネントのID}.form.{イベント関数名}
"onclick": "View00.form.btnAdd_onclick"
{
	"View":{
		"tag":"View",
		"attribute":{
			"id": "View00"
		},
		"Model": [
			{
				"fieldid": "",
				"Components": [
					{
						"tag": "Button",
						"attribute": {
							"id": "Button00",
							"text": "Button00",
							"onclick": "View00.form.btnAdd_onclick"
						}
					}
				]
			}
		],
		"Script": {
			"tag": "Script",
			"attribute": {
				"type": "xscript5.1"
			},
		"value": "this.btnAdd_onclick = function(obj:nexacro.Button,e:nexacro.ClickEventInfo) {}"
}

View Layout Editor

Viewテンプレートのfn_GetViewAttributeList関数内のedittypeが「Layout」である項目を設定した場合、View Generation WizardでView Attributes項目を設定する際にView Layout Editorを使用してレイアウト情報を設定することができます。

設定した値は、fn_GetViewGenerationResult関数にgenerationattrパラメータとして渡されて、View画面の構成で使用することができます。

View Layout Editorで設定したレイアウト情報をパラメータとして渡すことでViewテンプレートを開発する際にレイアウト情報を参照できるように直接作成してください。

fn_GetViewAttributeList関数で返すJSON値が下記のような場合を例題として説明します。

{
	"attributecount": 2,
	"attributes": [
		{
			"id": "use_triggerbutton",
			"edittype": "Boolean",
			"defaultvalue": "true"
		},
		{
			"id": "view_layout",
			"edittype": "Layout",
			"userproperties": {
				"propertycount": "1",
				"properties": [
					{
						"id": "gap",
						"edittype": "Number",
						"defaultvalue": 5
					}
				]
			}
		}			
	]
}

FormデザインウィンドウでViewコンポーネントにModelを接続します。View Generation WizardでView Templateを選択して、View Attributes項目設定ウィンドウで「Layout」としてedittypeを設定した項目(view_layout)の横に表示されるボタンをクリックすると、View Layout Editorを実行できます。

View Layout Editorの実行後、最初に表示される「Create Table」ボタンをクリックして、レイアウトの基本ColumnとRowを設定します。Columnの10個、Rowの8つの組み合わせまでは、碁盤柄のウィンドウでマウス操作で選択でき、それ以上の値は、「Custom」項目を選択してから、直接Column、Row数字を入力できます。

入力可能なレイアウトの範囲は、Column、Rowともに1~30までに制限されます。

Column、RowのサイズはViewコンポーネントの全体を埋めるように自動生成されます。各Column、Rowのサイズはプロパティウィンドウより変更することができます。赤い点線で表示された枠線はViewコンポーネントのサイズを表示します。

Column、Rowのサイズを-1に設定すると、ViewコンポーネントのサイズよりColumn、Rowのサイズの設定値を差し引いた残りのViewコンポーネントのサイズを均等に分けたサイズで自動設定されます。 例えば、Viewコンポーネントの横サイズが400の場合、Aカラムを200に設定し、B、Cカラムはそれぞれ-1に設定すると、B、Cカラムはそれぞれ100((400-200)/2)に設定されEditorに表示されます。

横サイズの表示はEditor画面上に限定された機能であり、valueの戻り値は-1として渡されるため、View Templateの開発者が実装する必要があります。

基本テーブルを作成した後には「Edit Column」、「Edit Row」ボタンもしくはコンテキストメニューからColumn、Rowを追加・挿入・削除することができます。

レイアウトの設定後 [OK]ボタンをクリックすると、「Layout」にedittypeを設定した項目の値が設定されます。

セルのプロパティの設定

View Layout Editorでセルを選択し、セルのプロパティを設定することができます。

基本的に設定できるプロパティは下記の通りです。

Modelの設定時に選択したフィールド値を選択している場合、セルに適用するフィールド値を設定することができます。

fn_GetViewAttributeList関数からuserproperties値を返した場合、User Propertiesプロパティを追加で設定することができます。

例えば、2つのModelフィールド値(name、company)を選択し、1つのuserproperties値(gap)を返した場合、設定できるセルのプロパティは下記の通りです。

セルの結合/解除

Grid Editorと同じようにセルの結合/解除機能をサポートします。結合する場合は2つ以上のセルを選択し、コンテキストメニューから「Merget Cells」項目を選択します。解除する場合は結合されたセルを選択し、コンテキストメニューから「Split Cell」項目を選択します。

セルの結合時にColumn、Rowインデックス情報は小さい値の方で設定されます。

valueの戻り値のJSON形式

valueの戻り値のJSON形式は下記の通りです。戻り値はfn_GetViewGenerationResult関数に generationattrパラメータとして渡され、View画面構成で使用することができます。

{
	"columnsize":[101,101,101],
	"rowsize":[66,66],
	"celllist":[
		{
			"col":"0",
			"row":"0",
			"halign":"left",
			"valign":"top",
			"direction":"horizontal",
			"gap":"5",
			"fieldlist":["name"]
		},
		{
			"col":"0",
			"row":"1",
			"halign":"center",
			"valign":"middle",
			"direction":"vertical",
			"gap":"5",
			"colspan":"2",
			"fieldlist":["name","company"]
		}
	]
}

XML ⇔ JSON Converter

XMLコードをJSONコードに変換したり、JSONコードをXMLコードに変換することができる機能をサポートします。

Viewコンポーネントの情報がViewテンプレートのfn_GetViewGenerationResult関数にcontentsの引数として渡される結果を予め確認したり、fn_GetViewGenerationResult関数から返すJSONデータを作成する用途などに活用できます。

機能提供メニュー

XML ⇔ JSON Converter機能は下記のメニューや画面からアクセスできます。

変換対象のコードの自動選択

画面によって変換するコードを自動選択する機能を提供します。

自動選択されたコードはInput領域にコピーされ、真ん中の変換ボタンをクリックするとJSONコードに変換されます。変換後のJSONコードはクリップボードにコピーされます。

コードの手入力

Input領域に直接入力したXMLもしくはJSONコードを変換することができます。自動的にXMLもしくはJSONコードを認識しそれぞれXML⇒JSON、JSON⇒XMLの変換を行います。

直接入力したコードにエラーがあった場合には、変換ボタンのクリック時にOutputウィンドウにエラーメッセージが出力されます。

Attributeの編集

QuickCodeペインで「Edit Common Attribute」項目を選択すると、プロジェクト内でService、Model、FieldにAttributeを追加することができます。各項目の新規生成時にだけでなく、既存項目にもAttributeが追加されます。

Edit Common Attribute画面が表示されたら「Field」、「Model」、「Service」項目を選択し、Attributeを追加します。

Field Attributeの編集

Model編集画面から「Add Attributes」を選択すると、「Edit User Attributes」画面が表示されます。

「Edit User Attributes」画面で「Common Attribute」として設定された項目を編集したり削除し、該当のModelでのみ利用するField Attributeを追加することができます。

Model Attributeの編集

QuickCodeペインでModelを選択すると、プロパティリストにModel Attributeが表示されます。

コンテキストメニューで「Edit User Attributes」項目を選択すると、「Edit User Attributes」画面が表示されます。

「Edit User Attributes」画面で「Common Attribute」として設定された項目を編集したり削除し、該当のModelでのみ利用するAttributeを追加することができます。

Service Attributeの編集

QuickCodeペインでService項目をダブルクリックするか、コンテキストメニューで「Edit」項目を選択すると、プロパティリストのServiceカテゴリーの項目が活性化します。

プロパティリストのコンテキストメニューで「Edit User Attributes」項目を選択すると、「Edit User Attributes」画面が表示されます。

「Edit User Attributes」画面で「Common Attribute」として設定された項目を編集したり削除し、該当のServiceでのみ利用するAttributeを追加することができます。

QuickCode Reference

QuickCode ReferenceではModel、View Template、Action項目を修正する場合、プロジェクト内で該当の項目を使用しているFormオブジェクトおよびViewコンポーネントを検索することができる機能を提供します。メニュー[QuickCode > View > QuickCode Reference]より表示有無を選択できます。



説明

1

フィルターツールバー

QuickCodeペインで選択した項目を表示したり、フィルターを解除します。

2

基本ツールバー

Go to Component:選択したViewコンポーネントにフォーカスが移動します。

Refresh:Reference一覧を再度照会します。

Clear All:Reference一覧を削除します。

Find:キーワード検索機能を実行します。

3

Reference一覧

プロジェクト内でViewコンポーネントを使用しているFormオブジェクトの一覧を表示します。フィルターを適用している場合は該当する一覧のみ表示します。

4

View Component一覧

選択したFormオブジェクトで条件に合致したViewコンポーネントの一覧が表示されます。

フィルター

QuickCodeペインでModel、View Template、Actionを選択し、コンテキストメニューで「Reference」を選択した場合、該当の項目を利用している対象のみ表示するようにフィルタを適用することができます。適用されたフィルター項目は青色で表示されます。青色で表示された項目をクリックすることで、フィルターを解除することができます。

情報表示アイコンをクリックすると、現在適用されたフィルターの情報が表示されます。

検索

フィルターを適用している状態で結果項目数が多い場合には、キーワードにより項目を検索することができます。キーワードを入力し検索ボタンをクリックすると、合致する項目をハイライト表示します。

Viewコンポーネントへの移動

検索結果からViewコンポーネントを選択した状態で「Go to Component」ボタンをクリックするか、Viewコンポーネントをダブルクリックすると、該当のViewコンポーネントが配置されているFormオブジェクトが開かれてViewコンポーネントにフォーカスが移動します。

Modelサービスの照会

TypeDefinitionでmodelタイプのサービスの登録時にURL、ServiceList、DataSchemaを設定している場合、該当のサービスでデータを照会してModel Group、Model Service、Model項目を取得することができます。

Model Group、Model Serviceの照会

1

TypeDefinictionでサービス項目を追加します。

Type: model
URL: https://edu.tobesoft.com/developer_guide/model/
ServiceList: ModelList.jsp
DataSchema: ModelList.jsp

2

QuickCodeペインでサービス項目を選択し、コンテキストメニューで「Refresh」項目を選択します。

項目選択時にサービスURL、ServiceListに設定されているサービスを照会します。リクエスト形式は下記の通りです。

[URL][ServiceList]?group=/
https://edu.tobesoft.com/developer_guide/N/Service/modellist.jsp?group=/

3

結果として表示されたModel Group、Model Serviceを選択し、コンテキストメニューで「Refresh」項目を選択します。

項目の選択時にサービスURL、ServiceListに設定されているサービスを照会します。リクエスト形式は下記の通りです。

[URL][ServiceList]?group=[選択したModel GroupもしくはModel Service]
例)https://edu.tobesoft.com/developer_guide/N/Service/modellist.jsp?group=ModelGroup_1

Model Groupの下位にModel Groupが存在する場合、パスとして「/」文字を用いてサービスを照会します。リクエスト軽視は下記の通りです。

[URL][ServiceList]?group=[上位のModel Group]/[選択したModel Group]
例)https://edu.tobesoft.com/developer_guide/N/Service/modellist.jsp?group=ModelGroup_1/ModelGroup_1_1

Modelの照会

1

結果として表示されたModel Serviceを選択し、コンテキストメニューで「Refresh」項目を選択します。

Modelを照会する場合は、サービス項目でServiceListの代わりにDataSchemaを用いて情報を照会します。リクエスト形式は下記の通りです。

[URL][DataSchema]?group=[Model Group]&id[選択したModel Service]
https://edu.tobesoft.com/developer_guide/N/Service/modellist.jsp?group=ModelGroup_1/ModelGroup_1_1&id=ModelService_1

2

Model項目を選択すると、フィールド情報を確認することができます。

サービスで紹介したModel項目は編集できません。

新規のFieldやAttributeを追加する機能は全て非活性になります。

レスポンスデータの形式 - ErrorCode, ErrorMsg

Tag

Value

必須有無

説明

正常処理

ErrorCode

0


ErrorMsg


成功した場合はメッセージを処理しません。

エラー処理

ErrorCode

-1


ErrorMsg


受信されたメッセージを画面に表示します。

レスポンスデータの形式 - Model Group, Model Service

Tag

Attribute

必須有無

説明

ModelGroup

id

id値を設定します。

type

group: Model Group

service: Model Service

[URL][ServiceList]?group=/
<?xml version='1.0' encoding='utf-8'?>
<Root>
	<ErrorCode>0</ErrorCode>
	<ErrorMsg>Success</ErrorMsg>

	<ModelGroup id="ModelGroup_1" type="group"/>
	<ModelGroup id="Service_1" type="service"/>
</Root>
[URL][ServiceList]?group=ModelGroup_1
<?xml version='1.0' encoding='utf-8'?>
<Root>
	<ErrorCode>0</ErrorCode>
	<ErrorMsg>Success</ErrorMsg>

	<ModelGroup id="ModelGroup_1">
		<ModelGroup id="ModelGroup_1_1" type="group"/>
		<ModelGroup id="Service_1_1" type="service"/>
	</ModelGroup>
</Root>

レスポンスデータの形式 - Model

Tag

Attribute

必須有無

説明

ModelInfo

version


"1.2"

Models



Modelの上位タグ

Model

id

id

name


名前

iotype


入出よタイプ(input/output)

[attr]


ModelUserAttributes > Attribute項目

Field

id

id

label

label情報

fieldtype

種類(FreeText/SelectOne/SelectAny/MultiMedia)

datatype

データ型(STRING/INT/FLOAT/BIGDECIMAL/DATE/TIME/DATETIME/BLOB)

datesize

データサイズ

description


説明

required

必須有無(true/false)

[attr]


FieldUserAttributes > Attribute項目

FieldUserAttributes



FieldUserAttributesの設定時にAttributeの上位タグ

ModelUserAttributes



ModelUserAttributesの設定時にAttributeの上位タグ

Service

id

id

name


名前

url

transactionのリクエスト時に利用するBusiness Service

[attr]


ServiceUserAttributes > Attribute項目

ServiceUserAttributes



ServiceUserAttributesの設定時にAttributeの上位タグ

ModelUserAttributes、FieldUserAttributes、ServiceUserAttributesタグの下位のAttributeタグの形式は下記の通りです。

Tag

Attribute

必須有無

説明

Attribute

name

名前

edittype

編集タイプ(Boolean/Enum/Number/String/ViewObjList)

defaultvalue


デフォルト値

enuminfo


Enum情報

description


説明

[URL][DataSchema]?group=ModelGroup_1&id=Service_1
<ModelInfo version="1.2">
	<Models>
		<Model id="dataset_1" name="dataset_1" iotype="input" p1="TEST">
			<Field id="name" datatype="STRING" datasize="50"  label="Name"  fieldType="FreeText"  description=""  required="true"  p1="TEST"  p2="" />
			<Field id="company" datatype="STRING" datasize="50"  label="Company"  fieldType="FreeText"  description=""  required="true"  p1=""  p2="TEST" />
			<FieldUserAttributes>
				<Attribute name="p1" edittype="String"/>
				<Attribute name="p2" edittype="String"/>
			</FieldUserAttributes>
			<ModelUserAttributes>
				<Attribute name="p1" edittype="String"/>
			</ModelUserAttributes>
		</Model>
		<Model id="dataset_2" name="dataset_2" iotype="output">
			<Field id="B1" datatype="INT" datasize="10"  label="1"  fieldType="FreeText"  description=""  required="true" />
			<Field id="B2" datatype="STRING" datasize="50"  label="1"  fieldType="FreeText"  description=""  required="true" />
		</Model>
	</Models>
    <Service id="svcSearchEmployee" name="SearchEmployee" url="http://localhost:8080/searchEmployeeInfo.jsp?" svc_attr01=""/>
    <ServiceUserAttributes>
       <Attribute name="svc_attr01" edittype="String"/>
    </ServiceUserAttributes>
</ModelInfo>

例題のJSP

動作方式の説明に使用したJSPのサンプルコードです。特定のModel Group、Model Serivce、Model項目の照会時にXMLコードを返します。

<%@ page contentType = "text/xml" %>
<%
	String str_group = request.getParameter("group")==null?"":request.getParameter("group");
	String str_id = request.getParameter("id")==null?"":request.getParameter("id");
	if(str_id.equals("")) 
	{
		if(str_group.equals("/"))
		{
%>
<Root>
  <ErrorCode>0</ErrorCode>
  <ErrorMsg>Success</ErrorMsg>

  <ModelGroup id="ModelGroup_1" type="group"/>
  <ModelGroup id="ModelGroup_2" type="group"/>
</Root>

<%
		} else if(str_group.equals("ModelGroup_1")){
%>
<Root>
  <ErrorCode>0</ErrorCode>
  <ErrorMsg>Success</ErrorMsg>

  <ModelGroup id="ModelGroup_1">
	<ModelGroup id="ModelGroup_1_1" type="group"/>
	<ModelGroup id="ModelGroup_1_2" type="group"/>
  </ModelGroup>		
</Root>
<%
		} else if(str_group.equals("ModelGroup_1/ModelGroup_1_1")){
%>
<Root>
  <ErrorCode>0</ErrorCode>
  <ErrorMsg>Success</ErrorMsg>

  <ModelGroup id="ModelGroup_1_1">
	<ModelGroup id="ModelService_1" type="service"/>
	<ModelGroup id="ModelService_2" type="service"/>
  </ModelGroup>		
</Root>
<%
		} else if(str_group.equals("ModelGroup_2")){
%>
<Root>
  <ErrorCode>0</ErrorCode>
  <ErrorMsg>Success</ErrorMsg>

  <ModelGroup id="ModelGroup_2">
	<ModelGroup id="ModelService_3" type="service"/>
	<ModelGroup id="ModelService_4" type="service"/>
  </ModelGroup>		
</Root>
<%
		} else {
%>
<Root>
  <ErrorCode>-1</ErrorCode>
  <ErrorMsg>Error</ErrorMsg>
</Root>
<%
		}
	} else if(str_id.equals("ModelService_1")){
%>
<Root>
  <ErrorCode>0</ErrorCode>
  <ErrorMsg>Success</ErrorMsg>

<ModelInfo version="1.2">
<Models>
<Model id="dataset_1" name="dataset_1" iotype="input" p1="TEST">
    <Field id="name" datatype="STRING" datasize="50"  label="Name"  fieldType="FreeText"  description=""  required="true"  p1="TEST"  p2="" />
    <Field id="company" datatype="STRING" datasize="50"  label="Company"  fieldType="FreeText"  description=""  required="true"  p1=""  p2="TEST" />
<FieldUserAttributes>
    <Attribute name="p1" edittype="String"/>
    <Attribute name="p2" edittype="String"/>
</FieldUserAttributes>
<ModelUserAttributes>
	<Attribute name="p1" edittype="String"/>
</ModelUserAttributes>
</Model>
<Model id="dataset_2" name="dataset_2" iotype="output">
    <Field id="B1" datatype="INT" datasize="10"  label="1"  fieldType="FreeText"  description=""  required="true" />
    <Field id="B2" datatype="STRING" datasize="50"  label="1"  fieldType="FreeText"  description=""  required="true" />
</Model>
</Models>
<Service id="svcSearchEmployee" name="SearchEmployee" url="http://localhost:8080/searchEmployeeInfo.jsp?" svc_attr01=""/>
    <ServiceUserAttributes>
       <Attribute name="svc_attr01" edittype="String"/>
    </ServiceUserAttributes>
</ModelInfo>	
</Root>
<%
	} else if(str_id.equals("ModelService_3")){
%>
<Root>
  <ErrorCode>0</ErrorCode>
  <ErrorMsg>Success</ErrorMsg>

<ModelInfo version="1.2">
<Models>
<Model id="dataset_1" name="dataset_1" iotype="input">
    <Field id="name" datatype="STRING" datasize="50"  label="Name"  fieldType="FreeText"  description=""  required="true" />
    <Field id="company" datatype="STRING" datasize="50"  label="Company"  fieldType="FreeText"  description=""  required="true" />
</Model>
</Models>
</ModelInfo>	
</Root>
<%
	} else {
%>
<Root>
  <ErrorCode>-1</ErrorCode>
  <ErrorMsg>Error</ErrorMsg>
</Root>
<%
	}
%>