‏نمایش پست‌ها با برچسب Oslo. نمایش همه پست‌ها
‏نمایش پست‌ها با برچسب Oslo. نمایش همه پست‌ها

۱۳۸۷/۱۲/۰۴

آشنايي با Oslo - قسمت سوم


اگر علاقمند باشيد كه دو قسمت قبل را به صورت آموزش ويديويي ملاحظه كنيد، لطفا ويديوهاي رايگان زير را دريافت نمائيد. اين ويديوها قسمت اجرا كردن اسكريپت حاصل روي يك ديتابيس را هم در آخر نمايش داده (علاوه بر مدلسازي و نمايش T-SQL حاصل) و شما را با Quadrant نيز آشنا خواهند كرد.


مآخذ:
biztalkgurus.com و bloggersguides.net

۱۳۸۷/۱۲/۰۳

آشنايي با Oslo - قسمت دوم


قبل شروع اين قسمت بد نيست با يك سري از وبلاگ‌هاي اعضاي تيم Oslo آشنا شويم:


در ادامه‌ي مثال قسمت قبل، اكنون مي‌خواهيم entity جديدي به نام Project را به مدل اضافه كنيم:

//mschema to define a Project type
type Project
{
ProjectID : Integer64 = AutoNumber();
ProjectName : Text#25;
ConectionStringSource : Text;
ConectionStringDestination : Text;
DateCompared: DateTime;
Comment: Text?;
ProjectOwner: ApplicationUser;
} where identity ProjectID;

مطابق تعاريف فوق، فيلد ProjectOwner ارجاعي را به نوع ApplicationUser كه پيشتر ايجاد كرديم دارد. اكنون براي مشاهده‌ي تغييرات حاصل شده نياز به ايجاد يك جدول از روي اين نوع جديد است كه foreign key آن به صورت زير تعريف مي‌شود:

//this will define a SQL foreign key relationship
ProjectCollection : Project* where item.ProjectOwner in ApplicationUserCollection;

پس از افزودن اين سطر، Intellipad بلافاصله اسكريپت T-SQL آن‌را براي ما ايجاد مي‌كند كه به شرح زير است:

set xact_abort on;
go

begin transaction;
go

set ansi_nulls on;
go

create schema [Test1];
go

create table [Test1].[ApplicationUserCollection]
(
[UserID] bigint not null identity,
[FirstName] nvarchar(max) null,
[LastName] nvarchar(25) not null,
[Password] nvarchar(10) not null,
constraint [PK_ApplicationUserCollection] primary key clustered ([UserID])
);
go

create table [Test1].[ProjectCollection]
(
[ProjectID] bigint not null identity,
[Comment] nvarchar(max) null,
[ConectionStringDestination] nvarchar(max) not null,
[ConectionStringSource] nvarchar(max) not null,
[DateCompared] datetime2 not null,
[ProjectName] nvarchar(25) not null,
[ProjectOwner] bigint not null,
constraint [PK_ProjectCollection] primary key clustered ([ProjectID]),
constraint [FK_ProjectCollection_ProjectOwner_Test1_ApplicationUserCollection] foreign key ([ProjectOwner]) references [Test1].[ApplicationUserCollection] ([UserID])
);
go

insert into [Test1].[ApplicationUserCollection] ([FirstName], [LastName], [Password])
values (N'user1', N'name1', N'1@34')
;

insert into [Test1].[ApplicationUserCollection] ([FirstName], [LastName], [Password])
values (N'user2', N'name2', N'123@4')
;

insert into [Test1].[ApplicationUserCollection] ([FirstName], [LastName], [Password])
values (N'user3', N'name3', N'56#2')
;

insert into [Test1].[ApplicationUserCollection] ([FirstName], [LastName], [Password])
values (N'user4', N'name4', N'789@5')
;
go

commit transaction;

Go

همانطور كه ملاحظه‌ مي‌كنيد، هنگام كار كردن با يك مدل، نگهداري و توسعه‌ي آن واقعا ساده‌تر است از ايجاد اين دستورات T-SQL .

نكته:
جهت آشنايي با انواع داده‌هاي مجاز در زبان M مي‌توان به مستندات رسمي آن مراجعه نمود:
The "Oslo" Modeling Language Specification

اكنون قصد داريم همانند مثال قسمت قبل، تعدادي ركورد آزمايشي را براي اين جدول تعريف كنيم:

ProjectCollection
{
Project1{
ProjectName = "My Project 1",
ConectionStringSource = "Data Source=.;Initial Catalog=MyDB1;Integrated Security=True;",
ConectionStringDestination = "Data Source=.;Initial Catalog=MyDB2;Integrated Security=True;",
Comment="Project Comment",
DateCompared=2009-01-01T00:00:00,
ProjectOwner=ApplicationUserCollection.User1 //direct ref to User1 (FK)
},
Project2{
ProjectName = "My Project 2",
ConectionStringSource = "Data Source=.;Initial Catalog=MyDB1;Integrated Security=True;",
ConectionStringDestination = "Data Source=.;Initial Catalog=MyDB2;Integrated Security=True;",
Comment="Project Comment",
DateCompared=2009-01-01T00:00:00,
ProjectOwner=ApplicationUserCollection.User2 //direct ref to User2 (FK)
}

}

چون بين ProjectOwner و ApplicationUserCollection رابطه ايجاد كرده‌ايم، هنگام استفاده از آن‌ها، برنامه Intellipad جهت سهولت كار، IntelliSense مربوطه را نيز نمايش خواهد داد :


ادامه دارد ...

۱۳۸۷/۱۲/۰۲

آشنايي با Oslo - قسمت اول


Oslo پلتفرم جديد مدل‌سازي مايكروسافت است كه در سال‌هاي آتي مورد استفاده قرار خواهد گرفت و همچنين اين روزها در مجامع توسعه و طراحي برنامه‌ها به شدت مورد بحث و توجه است. به همين جهت در طي مقالاتي با اين پلتفرم جديد بيشتر آشنا خواهيم شد.

دريافت Oslo

Oslo از سه قسمت عمده تشكيل شده است:
  • الف) زبان مدل سازي M
  • ب) ابزار مدل سازي Quadrant
  • ج) استفاده از SQL Server به عنوان مخزن

زبان مدل سازي M از سه قسمت به نام‌هاي MGraph ، MGrammer و MSchema تشكيل مي‌شود.
MGrammer : گرامر مورد استفاده در SDL را تعريف مي‌كند. Syntax Directed Translation
MSchema : طرح مدل را تعريف خواهد كرد.
MGraph : اگر MSchema بيانگر انواع باشد، MGraph بيانگر وهله‌ها خواهد بود.

يك مثال:
برنامه‌ي Intellipad را اجرا كنيد (فرض بر اين است كه SDK فوق را نصب كرده‌ايد)



در اينجا حالت را بر روي M Mode قرار دهيد (مطابق تصوير) و همچنين از منوي ظاهر شده‌ي M Mode ، گزينه‌ي Generic T-SQL preview را هم انتخاب كنيد.

اولين ماژول ما به صورت زير است:

module Test1
{
type ApplicationUser
{
UserID : Integer64=AutoNumber();
FirstName :Text#15;
LastName : Text#25;
Password : Text#10;
} where identity UserID;
}

ابتدا نام ماژول مشخص مي‌شود. شبيه به معرفي يك فضاي نام در برگيرنده‌ي اشياي مربوطه. سپس type ، بيانگر همان MSchema خواهد بود.
در اين مثال شناسه‌ي كاربري از نوع Integer64 خود افزايش يابنده تعريف شده است (نوع identity در اس كيوال سرور).
فيلدهاي نام ، نام خانوادگي و كلمه‌ي عبور از نوع متني با اندازه‌هاي مشخص 15 ، 25 و 10 كاراكتر تعريف شده‌اند. اگر اندازه مشخص نبود نوع را تنها Text تعريف كنيد.
نكته:
1-اگر پس از Text علامت ? قرار گيرد، به معناي فيلدي از نوع nullable خواهد بود و برعكس. زيبايي Intellipad هم در اينجا است كه بلافاصله پس از تايپ شما، عبارت T-SQL معادل را توليد مي‌كند.
2-در اينجا UserID‌ به صورت identity معرفي شده است. در زبان ام ، identity همانند primary key‌ در عبارات T-SQL عمل مي‌كند و نبايد اشتباه گرفته شود.

تا اينجا فقط يك type تعريف شده است. براي تبديل آن به يك جدول بايد آن‌را توسعه داد.

ApplicationUserCollection : ApplicationUser*;

اين سطر را به پس از تعريف type اضافه نمائيد. علامت ستاره در اينجا به معناي صفر يا بيشتر است و جهت بسط نوع تعريف شده به يك مجموعه به كار مي‌رود. اكنون با اضافه شدن اين سطر، Intellipad بلافاصله عبارات T-SQL معادل را توليد خواهد كرد كه در تصوير مشخص است. به اين صورت MGraph ما كه بيانگر وهله‌هايي از نوع ApplicationUser هستند توليد گرديد.

اكنون قصد داريم گروهي از كاربرها را به صورت نمونه ايجاد كنيم:

ApplicationUserCollection
{
//using a named instance
User1 {
FirstName="user1",
LastName="name1",
Password="1@34"
},
User2 {
FirstName="user2",
LastName="name2",
Password="123@4"
},
User3 {
FirstName="user3",
LastName="name3",
Password="56#2"
},
User4 {
FirstName="user4",
LastName="name4",
Password="789@5"
}
}

سطرهاي فوق را پس از تعريف ApplicationUserCollection در Intellipad اضافه كنيد. بلافاصله Intellipad عبارات T-SQL معادل را براي ما توليد خواهد كرد.



ادامه دارد ...