Actionオブジェクトのプロパティ、メソッド、イベント
プロパティ
プロパティ名 | 説明 |
|---|---|
targetview | Actionを実行するViewコンポーネントを設定するプロパティです。 |
メソッド
メソッド名 | 説明 |
|---|---|
getContents | Action実行時に伝達されるcontentsオブジェクトもしくはkeyに該当するvalueオブジェクトを返します。
- strKeyパラメータを設定しない場合、contentsオブジェクトを返します。 - strKeyパラメータは、「model」、「extra」のいずれかを設定できます。 |
getTargetView | targetviewプロパティ値に該当するViewコンポーネントを返します。
|
run | Actionを実行します。
|
イベント
イベント名 | 説明 |
|---|---|
onsuccess | runメソッドの実行に成功した場合のTrigger callback処理のためのイベントです。
|
onerror | runメソッドの実行に失敗した場合のTrigger callback処理のためのイベントです。
|
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プロパティの下に構成されます。
1つのタグは、1つのJSONオブジェクトで構成されます。
下位タグは、上位タグのタグ名と同じ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でセルを選択し、セルのプロパティを設定することができます。
基本的に設定できるプロパティは下記の通りです。
halign (left | center | right):セルに表示するModelフィールドの横方向の配置指定のプロパティ
valign (top | middle | bottom):セルに表示するModelフィールドの縦方向の配置指定のプロパティ
direction (horizontal | vertical):セルに表示するModelフィールドの方向指定のプロパティ
Modelの設定時に選択したフィールド値を選択している場合、セルに適用するフィールド値を設定することができます。
fieldlist: 選択したModelフィールド値
fn_GetViewAttributeList関数からuserproperties値を返した場合、User Propertiesプロパティを追加で設定することができます。
User Properties:userpropertiesとして設定したプロパティ情報
例えば、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- Columnサイズの配列rowsize- Rowサイズの配列celllist- セルのプロパティの配列col- Columnインデックスrow- RowインデックスhalignvaligndirectionUser Propertiescolspan- 横方向でセルを結合した場合rowspan- 縦方向でセルを結合した場合fieldlist- 設定したフィールド値の配列
{
"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機能は下記のメニューや画面からアクセスできます。
nexacro studioのメニュー [QuickCode > XML<->JSON Converter]
コンテキストメニュー
Formデザインビュー、Sourceウィンドウ
Formデザインビューからコンポーネント(invisible Object)の選択時
FormのSourceウィンドウからコードのブロック選択時
View Templateコード編集ウィンドウ
Project ExplorerからFormの選択時
コード編集ウィンドウの上部のボタン
View Templateコードの編集時
変換対象のコードの自動選択
画面によって変換するコードを自動選択する機能を提供します。
Formデザインビュー
特定のコンポーネント(オブジェクト)を選択していない場合
現在のLayoutに該当するLayoutのXMLコード
選択したLayoutによって該当するLayoutのXMLコード
特定のコンポーネント(オブジェクト)を選択している場合
選択したコンポーネント(オブジェクト)のXMLコード(複数選択もサポート)
Formソースビュー
変換対象のXMLコードの領域選択
選択したコードを変換処理
Viewテンプレートエディタ
変換対象のJSONもしくはXMLコードの領域選択
選択したコードを変換処理
自動選択されたコードは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>
<%
}
%>