wakanda#1

86
Shibuya, Tokyo Wakanda 勉強会 #1 2013-08-06 2013-06-19 presented by

Upload: kmiyako

Post on 21-Dec-2014

313 views

Category:

Technology


0 download

DESCRIPTION

sample solution and database posted on GitHub: https://github.com/miyako/4d-training-wakanda-1

TRANSCRIPT

Page 1: Wakanda#1

Shibuya, Tokyo

Wakanda勉強会 #12013-08-06

2013-06-19

presented by

Page 2: Wakanda#1

Shibuya, Tokyo

agenda

integration

Page 3: Wakanda#1

Shibuya, Tokyo

agenda

WAK3 WAK4 WAK5

openDataStore

open4DBase

model API v4 model API v5

addOutsideCatalogaddOutsideCatalog

addRemoteStoreaddRemoteStore

integration

Page 4: Wakanda#1

Shibuya, Tokyo

agenda

WAK3 WAK4 WAK5

openDataStore

open4DBase

model API v4 model API v5

addOutsideCatalogaddOutsideCatalog

addRemoteStoreaddRemoteStore

http://doc.wakanda.org/--v4/What-s-removed-after.904-991912.ja.html

removed in WAK4...

Page 5: Wakanda#1

Shibuya, Tokyo

agenda

downloads

Page 7: Wakanda#1

Shibuya, Tokyo

open4DBase()

WAK3 121356 122625 124119

v12 Wrong DB4D version number

Wrong DB4D version number

Wrong DB4D version number

v13 OK OK OK

v14 OK OK OK

http://doc.wakanda.org/-/-/open4DBase.301-593664.ja.htmlhttp://doc.wakanda.org/-/-/open4DBase.301-593664.ja.html

Page 8: Wakanda#1

Shibuya, Tokyo

open4DBase()

relation

Page 9: Wakanda#1

Shibuya, Tokyo

open4DBase()

relation attribute

Page 10: Wakanda#1

Shibuya, Tokyo

open4DBase()

プライマリーキー(必須: 1テーブルに欠落しているとWakandaが起動しない)プライマリーキーを倍長整数に(任意: UUIDとの比較,利便性,サイズ)1フィールドのインデックス(任意: デフォルトの自動をB-Treeに)nフィールドのインデックス(任意: デフォルトのなしをクラスターB-Treeに)n対1リレーション名(推奨: nテーブル名_1テーブル名)1対nリレーション名(推奨: 1テーブル名_nテーブル名)命名規則: 英数字,テーブル名は単数形,冒頭は大文字,フィールド名は小文字

checklist

Page 11: Wakanda#1

Shibuya, Tokyo

open4DBase()

プライマリーキー(必須: 1テーブルに欠落しているとWakandaが起動しない)プライマリーキーを倍長整数に(任意: UUIDとの比較,利便性,サイズ)1フィールドのインデックス(任意: デフォルトの自動をB-Treeに)nフィールドのインデックス(任意: デフォルトのなしをクラスターB-Treeに)n対1リレーション名(推奨: nテーブル名_1テーブル名)1対nリレーション名(推奨: 1テーブル名_nテーブル名)命名規則: 英数字,テーブル名は単数形,冒頭は大文字,フィールド名は小文字

checklist

Page 12: Wakanda#1

Shibuya, Tokyo

open4DBase()

プライマリーキー(必須: 1テーブルに欠落しているとWakandaが起動しない)プライマリーキーを倍長整数に(任意: UUIDとの比較,利便性,サイズ)1フィールドのインデックス(任意: デフォルトの自動をB-Treeに)nフィールドのインデックス(任意: デフォルトのなしをクラスターB-Treeに)n対1リレーション名(推奨: nテーブル名_1テーブル名)1対nリレーション名(推奨: 1テーブル名_nテーブル名)命名規則: 英数字,テーブル名は単数形,冒頭は大文字,フィールド名は小文字

checklist

Page 13: Wakanda#1

Shibuya, Tokyo

open4DBase()

プライマリーキー(必須: 1テーブルに欠落しているとWakandaが起動しない)プライマリーキーを倍長整数に(任意: UUIDとの比較,利便性,サイズ)1フィールドのインデックス(任意: デフォルトの自動をB-Treeに)nフィールドのインデックス(任意: デフォルトのなしをクラスターB-Treeに)n対1リレーション名(推奨: nテーブル名_1テーブル名)1対nリレーション名(推奨: 1テーブル名_nテーブル名)命名規則: 英数字,テーブル名は単数形,冒頭は大文字,フィールド名は小文字

checklist

Page 14: Wakanda#1

Shibuya, Tokyo

open4DBase()

プライマリーキー(必須: 1テーブルに欠落しているとWakandaが起動しない)プライマリーキーを倍長整数に(任意: UUIDとの比較,利便性,サイズ)1フィールドのインデックス(任意: デフォルトの自動をB-Treeに)nフィールドのインデックス(任意: デフォルトのなしをクラスターB-Treeに)n対1リレーション名(推奨: nテーブル名_1テーブル名)1対nリレーション名(推奨: 1テーブル名_nテーブル名)命名規則: 英数字,テーブル名は単数形,冒頭は大文字,フィールド名は小文字

checklist

Page 15: Wakanda#1

Shibuya, Tokyo

open4DBase()

プライマリーキー(必須: 1テーブルに欠落しているとWakandaが起動しない)プライマリーキーを倍長整数に(任意: UUIDとの比較,利便性,サイズ)1フィールドのインデックス(任意: デフォルトの自動をB-Treeに)nフィールドのインデックス(任意: デフォルトのなしをクラスターB-Treeに)n対1リレーション名(推奨: nテーブル名_1テーブル名)1対nリレーション名(推奨: 1テーブル名_nテーブル名)命名規則: 英数字,テーブル名は単数形,冒頭は大文字,フィールド名は小文字

checklist

http://doc.wakanda.org/home2.ja.html#/-/-.300-661504.ja.html

Page 16: Wakanda#1

Shibuya, Tokyo

open4DBase()

relation name

Page 17: Wakanda#1

Shibuya, Tokyo

open4DBase()

relation name

Page 18: Wakanda#1

Shibuya, Tokyo

open4DBase()

var modelFolder = ds.getModelFolder();var postFolder = modelFolder.parent.parent.path + "Post.4dbase/";var structureFile = File(postFolder + "Post.4DB");var dataFile = File(postFolder + "Post.4DD");

var dsPost = open4DBase(structureFile, dataFile);

Page 19: Wakanda#1

Shibuya, Tokyo

openDataStore()

http://doc.wakanda.org/-/-/openDataStore.301-592820.ja.html

removed in WAK4...

Page 20: Wakanda#1

Shibuya, Tokyo

openDataStore()

http://doc.wakanda.org/-/-/openDataStore.301-592820.ja.html

removed in WAK4...

WAK3 WAK4 WAK5

waModel XML JSON JSON

breakpoints XML JSON JSON

waPreferences XML XML XML

waSettings XML XML XML

waSolution XML XML XML

waProject XML XML XML

waPerm XML XML XML

waDirectory XML XML XML

Page 21: Wakanda#1

Shibuya, Tokyo

openDataStore()

var modelFolder = ds.getModelFolder();var studentsFolder = modelFolder.parent.parent.path + "Students/Students/";var modelFile = File(studentsFolder + "Model.waModel");var dataFile = File(studentsFolder + "DataFolder/data.waData");

var dsStudents = openDataStore(modelFile, dataFile);

Page 22: Wakanda#1

Shibuya, Tokyo

openDataStore()

var modelFolder = ds.getModelFolder();var studentsFolder = modelFolder.parent.parent.path + "Students/Students/";var modelFile = File(studentsFolder + "Model.waModel");var dataFile = File(studentsFolder + "DataFolder/data.waData");

var dsStudents = openDataStore(modelFile, dataFile);

Page 25: Wakanda#1

Shibuya, Tokyo

free form syntax (v3)

http://doc.wakanda.org/.../Using-the-Free-Form-Edition-Mode.300-706962.ja.html

guided model

guidedModel ={! Student :! ! gradeId :! ! {! !! onGet:function()! {!

unlock script

free form syntax

model ={! Student :! ! gradeId :! ! {! !! onGet:function()! {!

model.js

reload model

Page 27: Wakanda#1

Shibuya, Tokyo

free form syntax (v3)

http://doc.wakanda.org/.../Using-the-Free-Form-Edition-Mode.300-706962.ja.html

model.js

guidedModel model

クラス GUI JavaScript

属性 GUI JavaScript

メソッド JavaScript JavaScript

コードエディターにジャンプ YES NO

ファイル数 model.js model.js+include()

Page 28: Wakanda#1

Shibuya, Tokyo

free form syntax (v3)

http://doc.wakanda.org/.../Using-the-Free-Form-Edition-Mode.300-706962.ja.html

model.js

guidedModel ={ Student : { fullName : { onSet = function(value) { var names = value.split(' '); this.firstName = names[0]; this.lastName = names[1]; } } }};

guided model

Page 29: Wakanda#1

Shibuya, Tokyo

free form syntax (v3)

http://doc.wakanda.org/.../Using-the-Free-Form-Edition-Mode.300-706962.ja.html

model.js

model = {};model.Student = {};model.Student.fullName = {};

model.Student.name.onSet = function(value){ var names = value.split(' '); this.firstName = names[0]; this.lastName = names[1];}

free form syntax

グローバルオブジェクトmodelにアクセス

Page 30: Wakanda#1

Shibuya, Tokyo

free form syntax (v3)

http://doc.wakanda.org/.../Using-the-Free-Form-Edition-Mode.300-706962.ja.html

model.js

model = {};model.Student = {};model.Student.fullName = {};

model.Student.name.onSet = function(value){ var names = value.split(' '); this.firstName = names[0]; this.lastName = names[1];}

free form syntax

グローバルオブジェクトmodelにアクセス

deprecated

Page 31: Wakanda#1

Shibuya, Tokyo

model API (v4)

http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html

model.js

* @startlock~@endlockを除去してguidedModelをmodelに書き換えるだけ・・・

Page 32: Wakanda#1

Shibuya, Tokyo

model API (v4)

http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html

model.js

* @startlock~@endlockを除去してguidedModelをmodelに書き換えるだけ・・・

v3 v4

モデルエディターに表示 NO YES

コードエディターにジャンプ NO NO

移行時にコードを自動変換 NO NO**

Page 33: Wakanda#1

Shibuya, Tokyo

model API (v4)

http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html

model = {};var sc = model.addClass("Student");sc.addAttribute("ID", "storage", "long", "key auto");sc.addAttribute("firstName", "storage", "string", "btree");sc.addAttribute("lastName", "storage", "string", "btree");sc.addAttribute("name", "calculated", "string");sc.name.onSet = function(value){ var names = value.split(' '); this.firstName = names[0]; this.lastName = names[1];}

model.Student = {};model.Student.fullName = {};

model.Student.name.onSet = function(value){ var names = value.split(' '); this.firstName = names[0]; this.lastName = names[1];}

v3: グローバルオブジェクトmodelにアクセス

model.js

Page 34: Wakanda#1

Shibuya, Tokyo

model API (v4)

http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html

model = new DataStoreCatalog();var sc = model.addClass("Student");sc.addAttribute("ID", "storage", "long", "key auto");sc.addAttribute("firstName", "storage", "string", "btree");sc.addAttribute("lastName", "storage", "string", "btree");sc.addAttribute("name", "calculated", "string");sc.name.onSet = function(value){ var names = value.split(' '); this.firstName = names[0]; this.lastName = names[1];}

model.Student = {};model.Student.fullName = {};

model.Student.name.onSet = function(value){ var names = value.split(' '); this.firstName = names[0]; this.lastName = names[1];}

v4: コンストラクターを使用

model.js

Page 35: Wakanda#1

Shibuya, Tokyo

model API (v4)

http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html

model = new DataStoreCatalog();var sc = model.addClass("Student");sc.addAttribute("ID", "storage", "long", "key auto");sc.addAttribute("firstName", "storage", "string", "btree");sc.addAttribute("lastName", "storage", "string", "btree");sc.addAttribute("name", "calculated", "string");sc.name.onSet = function(value){ var names = value.split(' '); this.firstName = names[0]; this.lastName = names[1];}

v3コードを削除

model.js

Page 36: Wakanda#1

Shibuya, Tokyo

model API (v4)

http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html

model = new DataStoreCatalog();var sc = model.addClass("Student");sc.addAttribute("ID", "storage", "long", "key auto");sc.addAttribute("firstName", "storage", "string", "btree");sc.addAttribute("lastName", "storage", "string", "btree");sc.addAttribute("name", "calculated", "string");sc.name.onSet = function(value){ var names = value.split(' '); this.firstName = names[0]; this.lastName = names[1];}

クラスと属性の定義をmodel API v4に書き換え

model.js

Page 37: Wakanda#1

Shibuya, Tokyo

model API (v4)

http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html

model = new DataStoreCatalog();var sc = model.addClass("Student");sc.addAttribute("ID", "storage", "long", "key auto");sc.addAttribute("firstName", "storage", "string", "btree");sc.addAttribute("lastName", "storage", "string", "btree");sc.addAttribute("name", "calculated", "string");sc.name.onSet = function(value){ var names = value.split(' '); this.firstName = names[0]; this.lastName = names[1];}

計算属性の定義をmodel API v4に書き換え

model.js

Page 38: Wakanda#1

Shibuya, Tokyo

model API (v4)

http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html

model = new DataStoreCatalog();var sc = model.addClass("Student");sc.addAttribute("ID", "storage", "long", "key auto");sc.addAttribute("firstName", "storage", "string", "btree");sc.addAttribute("lastName", "storage", "string", "btree");sc.addAttribute("name", "calculated", "string");sc.name.onSet = function(value){ var names = value.split(' '); this.firstName = names[0]; this.lastName = names[1];}

model.js

Page 39: Wakanda#1

Shibuya, Tokyo

model API (v5)

http://doc.wakanda.org/Model/Working-with-the-Model-API-v5.200-995188.ja.html

model.js

Page 40: Wakanda#1

Shibuya, Tokyo

model API (v5)

http://doc.wakanda.org/Model/Working-with-the-Model-API-v5.200-995188.ja.html

v3 v4 v5

モデルエディターに表示 NO YES YES

コードエディターにジャンプ NO NO YES

移行時にコードを自動変換 NO NO YES

model.js

Page 41: Wakanda#1

Shibuya, Tokyo

model API (v5)

http://doc.wakanda.org/Model/Working-with-the-Model-API-v5.200-995188.ja.html

unlock script

waModel (JSON)

WAK4

model API (v4)

waModel (XML)

WAK3

model.js

unlock script

free form syntax (v3)

waModel (JSON)

WAK5

unlock script

model API (v5)

移行時にコードを自動変換するしない

Page 42: Wakanda#1

Shibuya, Tokyo

model API (v5)

http://doc.wakanda.org/Model/Working-with-the-Model-API-v5.200-995188.ja.html

XML to JSON

Page 43: Wakanda#1

Shibuya, Tokyo

Wakanda勉強会 #12013-08-06

2013-06-19

presented by

Page 44: Wakanda#1

Shibuya, Tokyo

Wakanda勉強会 #12013-08-06

2013-06-19

presented by

Page 45: Wakanda#1

Shibuya, Tokyo

agenda

integration

Page 46: Wakanda#1

Shibuya, Tokyo

agenda

WAK3 WAK4 WAK5

openDataStore

open4DBase

model API v4 model API v5

addOutsideCatalogaddOutsideCatalog

addRemoteStoreaddRemoteStore

integration

Page 47: Wakanda#1

Shibuya, Tokyo

agenda

WAK3 WAK4 WAK5

openDataStore

open4DBase

model API v4 model API v5

addOutsideCatalogaddOutsideCatalog

addRemoteStoreaddRemoteStore

http://doc.wakanda.org/--v4/What-s-removed-after.904-991912.ja.html

removed in WAK4...

Page 48: Wakanda#1

Shibuya, Tokyo

agenda

downloads

Page 50: Wakanda#1

Shibuya, Tokyo

open4DBase()

WAK3 121356 122625 124119

v12 Wrong DB4D version number

Wrong DB4D version number

Wrong DB4D version number

v13 OK OK OK

v14 OK OK OK

http://doc.wakanda.org/-/-/open4DBase.301-593664.ja.htmlhttp://doc.wakanda.org/-/-/open4DBase.301-593664.ja.html

Page 51: Wakanda#1

Shibuya, Tokyo

open4DBase()

relation

Page 52: Wakanda#1

Shibuya, Tokyo

open4DBase()

relation attribute

Page 53: Wakanda#1

Shibuya, Tokyo

open4DBase()

プライマリーキー(必須: 1テーブルに欠落しているとWakandaが起動しない)プライマリーキーを倍長整数に(任意: UUIDとの比較,利便性,サイズ)1フィールドのインデックス(任意: デフォルトの自動をB-Treeに)nフィールドのインデックス(任意: デフォルトのなしをクラスターB-Treeに)n対1リレーション名(推奨: nテーブル名_1テーブル名)1対nリレーション名(推奨: 1テーブル名_nテーブル名)命名規則: 英数字,テーブル名は単数形,冒頭は大文字,フィールド名は小文字

checklist

Page 54: Wakanda#1

Shibuya, Tokyo

open4DBase()

プライマリーキー(必須: 1テーブルに欠落しているとWakandaが起動しない)プライマリーキーを倍長整数に(任意: UUIDとの比較,利便性,サイズ)1フィールドのインデックス(任意: デフォルトの自動をB-Treeに)nフィールドのインデックス(任意: デフォルトのなしをクラスターB-Treeに)n対1リレーション名(推奨: nテーブル名_1テーブル名)1対nリレーション名(推奨: 1テーブル名_nテーブル名)命名規則: 英数字,テーブル名は単数形,冒頭は大文字,フィールド名は小文字

checklist

Page 55: Wakanda#1

Shibuya, Tokyo

open4DBase()

プライマリーキー(必須: 1テーブルに欠落しているとWakandaが起動しない)プライマリーキーを倍長整数に(任意: UUIDとの比較,利便性,サイズ)1フィールドのインデックス(任意: デフォルトの自動をB-Treeに)nフィールドのインデックス(任意: デフォルトのなしをクラスターB-Treeに)n対1リレーション名(推奨: nテーブル名_1テーブル名)1対nリレーション名(推奨: 1テーブル名_nテーブル名)命名規則: 英数字,テーブル名は単数形,冒頭は大文字,フィールド名は小文字

checklist

Page 56: Wakanda#1

Shibuya, Tokyo

open4DBase()

プライマリーキー(必須: 1テーブルに欠落しているとWakandaが起動しない)プライマリーキーを倍長整数に(任意: UUIDとの比較,利便性,サイズ)1フィールドのインデックス(任意: デフォルトの自動をB-Treeに)nフィールドのインデックス(任意: デフォルトのなしをクラスターB-Treeに)n対1リレーション名(推奨: nテーブル名_1テーブル名)1対nリレーション名(推奨: 1テーブル名_nテーブル名)命名規則: 英数字,テーブル名は単数形,冒頭は大文字,フィールド名は小文字

checklist

Page 57: Wakanda#1

Shibuya, Tokyo

open4DBase()

プライマリーキー(必須: 1テーブルに欠落しているとWakandaが起動しない)プライマリーキーを倍長整数に(任意: UUIDとの比較,利便性,サイズ)1フィールドのインデックス(任意: デフォルトの自動をB-Treeに)nフィールドのインデックス(任意: デフォルトのなしをクラスターB-Treeに)n対1リレーション名(推奨: nテーブル名_1テーブル名)1対nリレーション名(推奨: 1テーブル名_nテーブル名)命名規則: 英数字,テーブル名は単数形,冒頭は大文字,フィールド名は小文字

checklist

Page 58: Wakanda#1

Shibuya, Tokyo

open4DBase()

プライマリーキー(必須: 1テーブルに欠落しているとWakandaが起動しない)プライマリーキーを倍長整数に(任意: UUIDとの比較,利便性,サイズ)1フィールドのインデックス(任意: デフォルトの自動をB-Treeに)nフィールドのインデックス(任意: デフォルトのなしをクラスターB-Treeに)n対1リレーション名(推奨: nテーブル名_1テーブル名)1対nリレーション名(推奨: 1テーブル名_nテーブル名)命名規則: 英数字,テーブル名は単数形,冒頭は大文字,フィールド名は小文字

checklist

http://doc.wakanda.org/home2.ja.html#/-/-.300-661504.ja.html

Page 59: Wakanda#1

Shibuya, Tokyo

open4DBase()

relation name

Page 60: Wakanda#1

Shibuya, Tokyo

open4DBase()

relation name

Page 61: Wakanda#1

Shibuya, Tokyo

open4DBase()

var modelFolder = ds.getModelFolder();var postFolder = modelFolder.parent.parent.path + "Post.4dbase/";var structureFile = File(postFolder + "Post.4DB");var dataFile = File(postFolder + "Post.4DD");

var dsPost = open4DBase(structureFile, dataFile);

Page 62: Wakanda#1

Shibuya, Tokyo

openDataStore()

http://doc.wakanda.org/-/-/openDataStore.301-592820.ja.html

removed in WAK4...

Page 63: Wakanda#1

Shibuya, Tokyo

openDataStore()

http://doc.wakanda.org/-/-/openDataStore.301-592820.ja.html

removed in WAK4...

WAK3 WAK4 WAK5

waModel XML JSON JSON

breakpoints XML JSON JSON

waPreferences XML XML XML

waSettings XML XML XML

waSolution XML XML XML

waProject XML XML XML

waPerm XML XML XML

waDirectory XML XML XML

Page 64: Wakanda#1

Shibuya, Tokyo

openDataStore()

var modelFolder = ds.getModelFolder();var studentsFolder = modelFolder.parent.parent.path + "Students/Students/";var modelFile = File(studentsFolder + "Model.waModel");var dataFile = File(studentsFolder + "DataFolder/data.waData");

var dsStudents = openDataStore(modelFile, dataFile);

Page 65: Wakanda#1

Shibuya, Tokyo

openDataStore()

var modelFolder = ds.getModelFolder();var studentsFolder = modelFolder.parent.parent.path + "Students/Students/";var modelFile = File(studentsFolder + "Model.waModel");var dataFile = File(studentsFolder + "DataFolder/data.waData");

var dsStudents = openDataStore(modelFile, dataFile);

Page 68: Wakanda#1

Shibuya, Tokyo

free form syntax (v3)

http://doc.wakanda.org/.../Using-the-Free-Form-Edition-Mode.300-706962.ja.html

guided model

guidedModel ={! Student :! ! gradeId :! ! {! !! onGet:function()! {!

unlock script

free form syntax

model ={! Student :! ! gradeId :! ! {! !! onGet:function()! {!

model.js

reload model

Page 70: Wakanda#1

Shibuya, Tokyo

free form syntax (v3)

http://doc.wakanda.org/.../Using-the-Free-Form-Edition-Mode.300-706962.ja.html

model.js

guidedModel model

クラス GUI JavaScript

属性 GUI JavaScript

メソッド JavaScript JavaScript

コードエディターにジャンプ YES NO

ファイル数 model.js model.js+include()

Page 71: Wakanda#1

Shibuya, Tokyo

free form syntax (v3)

http://doc.wakanda.org/.../Using-the-Free-Form-Edition-Mode.300-706962.ja.html

model.js

guidedModel ={ Student : { fullName : { onSet = function(value) { var names = value.split(' '); this.firstName = names[0]; this.lastName = names[1]; } } }};

guided model

Page 72: Wakanda#1

Shibuya, Tokyo

free form syntax (v3)

http://doc.wakanda.org/.../Using-the-Free-Form-Edition-Mode.300-706962.ja.html

model.js

model = {};model.Student = {};model.Student.fullName = {};

model.Student.name.onSet = function(value){ var names = value.split(' '); this.firstName = names[0]; this.lastName = names[1];}

free form syntax

グローバルオブジェクトmodelにアクセス

Page 73: Wakanda#1

Shibuya, Tokyo

free form syntax (v3)

http://doc.wakanda.org/.../Using-the-Free-Form-Edition-Mode.300-706962.ja.html

model.js

model = {};model.Student = {};model.Student.fullName = {};

model.Student.name.onSet = function(value){ var names = value.split(' '); this.firstName = names[0]; this.lastName = names[1];}

free form syntax

グローバルオブジェクトmodelにアクセス

deprecated

Page 74: Wakanda#1

Shibuya, Tokyo

model API (v4)

http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html

model.js

* @startlock~@endlockを除去してguidedModelをmodelに書き換えるだけ・・・

Page 75: Wakanda#1

Shibuya, Tokyo

model API (v4)

http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html

model.js

* @startlock~@endlockを除去してguidedModelをmodelに書き換えるだけ・・・

v3 v4

モデルエディターに表示 NO YES

コードエディターにジャンプ NO NO

移行時にコードを自動変換 NO NO**

Page 76: Wakanda#1

Shibuya, Tokyo

model API (v4)

http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html

model = {};var sc = model.addClass("Student");sc.addAttribute("ID", "storage", "long", "key auto");sc.addAttribute("firstName", "storage", "string", "btree");sc.addAttribute("lastName", "storage", "string", "btree");sc.addAttribute("name", "calculated", "string");sc.name.onSet = function(value){ var names = value.split(' '); this.firstName = names[0]; this.lastName = names[1];}

model.Student = {};model.Student.fullName = {};

model.Student.name.onSet = function(value){ var names = value.split(' '); this.firstName = names[0]; this.lastName = names[1];}

v3: グローバルオブジェクトmodelにアクセス

model.js

Page 77: Wakanda#1

Shibuya, Tokyo

model API (v4)

http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html

model = new DataStoreCatalog();var sc = model.addClass("Student");sc.addAttribute("ID", "storage", "long", "key auto");sc.addAttribute("firstName", "storage", "string", "btree");sc.addAttribute("lastName", "storage", "string", "btree");sc.addAttribute("name", "calculated", "string");sc.name.onSet = function(value){ var names = value.split(' '); this.firstName = names[0]; this.lastName = names[1];}

model.Student = {};model.Student.fullName = {};

model.Student.name.onSet = function(value){ var names = value.split(' '); this.firstName = names[0]; this.lastName = names[1];}

v4: コンストラクターを使用

model.js

Page 78: Wakanda#1

Shibuya, Tokyo

model API (v4)

http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html

model = new DataStoreCatalog();var sc = model.addClass("Student");sc.addAttribute("ID", "storage", "long", "key auto");sc.addAttribute("firstName", "storage", "string", "btree");sc.addAttribute("lastName", "storage", "string", "btree");sc.addAttribute("name", "calculated", "string");sc.name.onSet = function(value){ var names = value.split(' '); this.firstName = names[0]; this.lastName = names[1];}

v3コードを削除

model.js

Page 79: Wakanda#1

Shibuya, Tokyo

model API (v4)

http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html

model = new DataStoreCatalog();var sc = model.addClass("Student");sc.addAttribute("ID", "storage", "long", "key auto");sc.addAttribute("firstName", "storage", "string", "btree");sc.addAttribute("lastName", "storage", "string", "btree");sc.addAttribute("name", "calculated", "string");sc.name.onSet = function(value){ var names = value.split(' '); this.firstName = names[0]; this.lastName = names[1];}

クラスと属性の定義をmodel API v4に書き換え

model.js

Page 80: Wakanda#1

Shibuya, Tokyo

model API (v4)

http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html

model = new DataStoreCatalog();var sc = model.addClass("Student");sc.addAttribute("ID", "storage", "long", "key auto");sc.addAttribute("firstName", "storage", "string", "btree");sc.addAttribute("lastName", "storage", "string", "btree");sc.addAttribute("name", "calculated", "string");sc.name.onSet = function(value){ var names = value.split(' '); this.firstName = names[0]; this.lastName = names[1];}

計算属性の定義をmodel API v4に書き換え

model.js

Page 81: Wakanda#1

Shibuya, Tokyo

model API (v4)

http://doc.wakanda.org/Model/Working-with-the-Model-API.200-975844.ja.html

model = new DataStoreCatalog();var sc = model.addClass("Student");sc.addAttribute("ID", "storage", "long", "key auto");sc.addAttribute("firstName", "storage", "string", "btree");sc.addAttribute("lastName", "storage", "string", "btree");sc.addAttribute("name", "calculated", "string");sc.name.onSet = function(value){ var names = value.split(' '); this.firstName = names[0]; this.lastName = names[1];}

model.js

Page 82: Wakanda#1

Shibuya, Tokyo

model API (v5)

http://doc.wakanda.org/Model/Working-with-the-Model-API-v5.200-995188.ja.html

model.js

Page 83: Wakanda#1

Shibuya, Tokyo

model API (v5)

http://doc.wakanda.org/Model/Working-with-the-Model-API-v5.200-995188.ja.html

v3 v4 v5

モデルエディターに表示 NO YES YES

コードエディターにジャンプ NO NO YES

移行時にコードを自動変換 NO NO YES

model.js

Page 84: Wakanda#1

Shibuya, Tokyo

model API (v5)

http://doc.wakanda.org/Model/Working-with-the-Model-API-v5.200-995188.ja.html

unlock script

waModel (JSON)

WAK4

model API (v4)

waModel (XML)

WAK3

model.js

unlock script

free form syntax (v3)

waModel (JSON)

WAK5

unlock script

model API (v5)

移行時にコードを自動変換するしない

Page 85: Wakanda#1

Shibuya, Tokyo

model API (v5)

http://doc.wakanda.org/Model/Working-with-the-Model-API-v5.200-995188.ja.html

XML to JSON

Page 86: Wakanda#1

Shibuya, Tokyo

Wakanda勉強会 #12013-08-06

2013-06-19

presented by