Tuesday, June 12, 2007

SQL Server 2005 Compact Edition

Semasa develop Autometed Test (AT) untuk scanner simulator, saya decide menggunakan SQL Server 2005 Compact Edition menggantikan SQL Server CE yang digunakan didalam Scanner Symbol MC3000, dan mengikut design AT, unutk menjalankan scanner, ianya perlu di mulakan dari AT dan Web Services menjadi medium antara AT dan Scanner Simulator. Apabila saya excute unit test, saya dapat error "SQL Server Compact Edition is not intended for ASP.NET development".

Saya google dan find beberapa info, dimana SQL Server COmpact Edition memang tak support ASP.Net by default, tetapi ada work around. Ok ini adalah kerana SQL Compact Edition tidak optomized untuk serve sebagai database untuk web site/web services dan juga tidak support untuk multi user connection. Ia di gunakan sebagai embedded database didalam aplikasi. So workaround yang boleh dibuat ialah jika hendak menggunakan Compact Edition bersama Web Services,ianya hanya unutk synchronization ataupun single user dan code untuk tukar behavior SQL Server Compact seperti berikut:

AppDomain.CurrentDomain.SetData("SQLServerCompactEditionUnderWebHosting", true)


Letak code nie before jalankan aplikasi.

Wednesday, June 06, 2007

New C# Orcas Language

Hari ni, saya berkesempatan untuk write simple code menggunakan new C# language dalam Orcas. Salah satu language features baru ialah Query Syntax

Query Syntax ialah cara mudah untuk filter any information dalam memory collection. Ianya menggunakan LINQ query operator. Contoh dibawah

using System;
using System.Collections.Generic;
using System.Text;
using System.Xml.Linq;
using System.Data.Linq;
using System.Linq;
namespace ExtensionMethod
{
public class Program
{

public static void Main(string[] args)
{
List<People> pe = ListPeople();
IEnumerable<People> p = pe.Where(p1=>p1.Name.Equals("Azam"));
foreach (People pp in p)
{
Console.WriteLine(pp.Name);

}

Console.ReadLine();
}

public static List<People> ListPeople()
{
List<People> p = new List<People>
{
new People {Name="Azam",Address="Melaka"},
new People {Name="Kamal",Address="Wilayah"}
};
return p;
}
}

public class People
{
public string Name { set; get; }
public string Address { set; get; }
}

}

Monday, June 04, 2007

Kembali bekerja setelah seminggu bercuti

Hari nie saya start kerje semula..rasa sengal otak nak start tengok code dan design setelah seminggu tak sentuh komputer, email pun saya malas nak access masa cuti..memang cuti sakan lah minggu lepas, saya just bawa family bercuti ke Bukit Merah..anak saya yang sulong kalau kat rumah cukup.. suka main air dlm pool kecil.. so bila bawa ke bukit merah kat swimming pool kanak-kanak.. cukup main happy lagi..seronok tengok.

Balik bila tgk code, agak lembap sikit first day.. banyak check email..dan baca posting dlm it-tutor.

Wednesday, May 16, 2007

Development Today

Semalam saya dah cuba download Orcas C # Express Edition tapi belum install lagi, berminat nak test NHibernate Linq.

Group saya kena buat Test Simulation untuk Sanner Application, dah buat research SQL Ce 2.0 tak boleh run on desktop kena run dalam Scanner, tapi kalau guna SQL Mobile 2005 boleh run guna desktop.

Tapi dll version unutk connect ke SQL Server Ce menggunakan version yang di set di machine.config (c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG) version 9.0.242.0 bukan yang ada di dalam SQL Mobile Server version 3.0.3600.

Hari ini juga buat stress test SMS Gateway dgn Celcom.

Terbaru, untuk buat database sync anatara mobile device dan desktop boleh guna Sql Compact Edition.

Detail Info
http://www.microsoft.com/sql/editions/compact/default.mspx

Tuesday, May 15, 2007

Mobile Development

Windows Mobile 5.0 Developer Resource Kit
- Tool untuk develop Windows Mobile in VS.Net 2005
http://www.microsoft.com/downloads/details.aspx?familyid=06111A3A-A651-4745-88EF-3D48091A390B&displaylang=en

Untuk redisbutable Compact Framework boleh download di
http://download.microsoft.com/download/f/e/8/fe8b935a-419e-48b1-8061-050211b250af/NETCFSetupv2.msi

SQL Mobile 2005
http://www.microsoft.com/downloads/details.aspx?FamilyId=5BD8ABAA-5813-4DB3-B23A-24551DE2ECC1&displaylang=en

Thursday, March 15, 2007

Test,Test, Test dan Test

Hahaha terasa nak cerita pasal TDD..emm biasanya berapa jenis test yang ada dlm test korang?? Ini bukan bermaksud UAT,Stress Test dan test-test yang lain tapi ini ialah test terhadap code..

Saya.. bahagikan test kepada beberapa test suite...
yang pertama saya akan test process/funtional atau core domian resposibility..sebagai conoth dalam domain Order..saya akan ada TestGetTotalItem() then saya ada Create,Read,Update Delete Test.. iaitu yang melibatkan kan communication ke database..tapi tak terlalu tumpukan sgt test disini..just a few insert update dan delete ke pada semua table dari Repository class dah cukup..

Lain..test suite ialah TestServices dimana kebanyakkan business process... diolah di services ..dan penting untuk fikirkan dari sudut client kerana .. client yang akan guna services....

dari segi ranking
- domain responsiblity test
- services test
- CRUD test

Pilot Project Lagi..

Still kat Shah Alam untuk pilot project, emm memang stress juga tapi Alhamdulillah.. ada group support yang cukup bagus dari SA team dan Java team.. :) main problem ialah network connectivity dari shah alam ke production server..

Lagi satu.. nak kena cari solution dlm web config mamcam maner nak buat supaya bila debug mode guna webservice dev dan bila production boleh guna webservice middleware, tanpa perlu tukar kat code atau configuration yang lain. Dalam kepala terfikir untuk guna Spring IoC..


Tapi yang menarik..saya bnyk belajar process courier dan penghantaran doc/parcel ..yang sebelum nie dah nak masuk 4 bulan masih lagi kabur beberapa process dlm project ini.

Thursday, March 08, 2007

Pilot Project

Hari Selasa depan saya akan ditempatkan di pilot station di shah alam untuk ..buat pre pilot untuk project company. Agak besar juga project ini terlibat dgn beberapa team seperti Java, .Net dan SAP.

So rase agak sibuk minggu depan..jika ada bug.. saya kena solve kan pada hari tersebut juga.. pada masa yg sama .. kena buat stress test.

Untuk project nie terdapat beberapa Open Source tools yang department saya (Java/.Net) guna

1. Nant/Ant (Build)
2. NUnit/JUnit (Test Tool)
3. JMeter (Stress Test)
4. WAT-IN (Web Application Test In .Net)
5. Subversion

Update
------------
Perbezaan antara Services dan Controller

Saya agak payah hendak membezakan penggunaan kedua-dua cara tersebut, dimana adakala penggunaannya hampir sama...tapi yang pasti controller lebih kepada koordinasi beberapa business flow termasuk juga koordinasi ke Services. Manakala services lebih specific kerja kepada sesuatu entity seperti OrderServices,DebitServices dan lain2.

Wednesday, March 07, 2007

Generate WebService code dynamically

Macam maner agak nyer nak generate webservice class method secara dynamically runtime??.. bukan melalui interface dlm VS.Net "Add Web Reference"...Ada satu library yg benarkan developer untuk generate webservice proxy... menarik..tgh cuba

http://www.codeplex.com/ProxyFactory

Update

Baru je download Power Toys for Visual Studio Pack Installer

Tuesday, March 06, 2007

Watin & MonoRail

Hari ini ada 2 perkara yang saya kira agak baru juga dlm development env saya. Firt Web Application In .Net (Watin) dan juga MonoRail.

Monday, March 05, 2007

Tulis semula

A'salam semua,
Dah lebih 6 bulan rasa nyer saya tak update web ini... tak de apa nak tulis..malas.. sibuk.. macam-macam...

Saya dah join company baru..selepas berhenti dari TMNet ... so memang bnyk info baru saya nak share..insyALlah jika ada masa..dan kelapangan.

Cuma sekrang nie..tanggungjawab di tempat kerja lebih besar.. dgn tugas yg lebih mencabar...,
saya sekarang ditugaskan untuk handle .Net Team.. dan insyAllah bulan hadapan ada beberapa kemasukkan developer baru..

Friday, September 22, 2006

Selamat Menyambut Ramadhan Al-Mubarak

First sekali nak ucapkan pada sesiapalah yang masuk dlm web nie, Selamat Menyambut Ramadhan Al-Mubarak yang bakal menjelang tiba beberapa hari saja lagi. Semoga puasa kali ini lebih berkualiti dari tahun-tahun yang sebelumnya.. InsyAllah.

Dah lebih dari sebulan saya tak sempat nak update info baru, busy?? memang busy sangat sekarang ini. InsyAllah saya akan join company baru pada 9/10/2006 setelah 6 tahun di company sekarang ini, semoga pilihan kerjaya saya tepat dan berkat.

Agak berat juga hendak berhijrah ke tempat kerja yang baru, tapi insyAllah ada hikmah pada semua perkara yang berlaku.

Development plan??.. ada beberapa plan yang saya ingin buat berkaitan development tapi biarlah dulu bila dah betul boleh start dan ada masa..saya ceritalah..

Tuesday, August 08, 2006

ItemBanking - Analisa

Malam tadi saya start analisa project freelance yang baru ItemBanking, buat sikit simple requirement dan beberapa process flow. Agak menarik juga untuk design domain model bagi ItemBanking. Saya start dgn domain Course dan lebih kurang 3 jam, saya dah completekan 60% domain yang terlibat dalam ItemBanking.

Tengok jam dah pukul 1 pagi, tengok anak dah tidur, dia macam haus, saya pergi buatkan susu dan perhatikan dia minum..

Tgh hari tadi company yang pernah ambil saya buat freelance project eTender call saya, minta saya datang discuss satu lagi freelance project database driven juga. Alhamdulillah dapat satu lagi project, insyAllah rezeki anak dan keluarga. Saya berani untuk ambil project ini kerana project ItemBanking saya hanya terlibat dalam core design dan bukannya dalam UI.

Saya ada juga discuss dgn seorang kawan untuk buat 1 hari free class introduction unutk Domain Driven Design dan Test Driven Design, skrg nie nak dapatkan masa dan tempat.

Friday, August 04, 2006

Development Issue

Design domain model memerlukan latihan yang berterusan, setiap applikasi memerlukan cara yang berlainan.

Jadi perlu diingat design domain model bukan nyer didapati dalam bentuk teori, seseorang boleh tulis panjang lebar dan bermacama teknik nak buat design model, tapi unutk merasai cabaran sebenenar design domain model ialah dengan ambil kertas kosong dan conteng apa-apa domain yang terlibat dalam aplikasi, latihan demi latihan memastikan anda faham bagaimana handak menyelesaikan sesuatu masalah.

Saya juga adakala bila design domain model..memerlukan beberapa kali tune design baru dapat domain model yang pada saya, saya berpuashati.. adakala bila saya dah jalankan unit test, then saya dapati domain model saya tidak boleh menampung tambahan keperluan jika ada, jadi saya kena pergi semula ke domain model buat perubahan dari segi tambahan atau kurangkan domain model atau pun perubahan dari segi relation antara domain.

Wednesday, August 02, 2006

Update

Member dari microsoft, contact saya, minta carikan 2 org .Net developer untuk 2 bulannyer project sebagai freelance tapi nak fulltime sebab kena datang kat tempat customer.Pada sesiapa yang available sebagai fulltime freelance dan nak cuba boleh email resume kat saya .. ryzamm@yahoo.com

Seminggu tak dapat nak update pasal development SOC Application, sibuk dgn SurveyManagement application. Application nie..dah up kat server menggunakan .Net 2.0 Framework, cuma part nak build Survey presentation tak siap lagi.. skrg user dah boleh buat survey part Admin je plan dalam minggu ini.

Pasal kerja, pun masih lagi tunggu dari HR nyer confirmation, on site GM department saya, semua dah clear pasal tambahan apa yang saya minta..kena tunggu beberapa hari lagi kot.. tapi saya memang dalam delima sekarang nie,rasa segan ada juga dgn member dari company yang lagi satu sebab saya dah tandatangan persetujuan join company tersebut..

Minggu lepas bawa si comel saya Damia Bisyri pergi buat medical check up.. rutin every 3 month, Alhamdulillah berat dia bertambah dan batuk juga dah hilang.Antara masa 2 minggu yang lepas saya dapat 2 org anak sedara baru, satu adik saya sendiri, anak yang ketiga nama Youseff Ahmad Yasser dan seorang lagi wife saya nyer abg anak perempuan Nur Farahiyah. Wife saya dijangka melahirkan anak saya yang kedua bulan 2 tahun depan... Alhamdulillah.

Saya dapat email senarai barangan yang ada sangkut paut secara langsung dengan Israel laknatullah, antaranya pasaraya Tesco,Coca Cola dan Mc Donald.. dan ada beberapa lagi barangan... insyAllah saya memang tak pernah lagi membeli belah kat Tescon, Coca Cola dah lama tak minum.. Mc Donald nie nak kena asuh my family agar tak beli burger Mc Donald selepas nie ..InsyAllah.. semoga Allah beri kekuatan.

Minggu lepas juga plan nak join demo kat Kg Baru under Pas dan NGO yang lain.. tapi tak sempat nak pergi kesana ader urgent kerja kat datacenter Wangsa Maju.. baca kat online Harakahdaily je.. dgr cerita kat Masjid KLCC pun ader demo gak..heheheh... dpt tahu masa tgk berita 8.00 malam..semangat betul mamat tu..ekk..perghh :) betulke nak boikot???..Pak mentua dia tak bagi boikot pun muahahahaha......

Tuesday, July 25, 2006

First Sketch - SurveyManagement Domain Model

InsyAllah saya akan hantar beberapa domain model untuk exterprise application, tapi kebanyakkan adalah dalam initial design lagi..

Unutk SOC Application, saya akan tulis sambungan tentang development project tersebut insyAllah minggu hadapan.


Monday, July 24, 2006

Second offer dari company

Hari khamis lepas dapat call from PA AGM company T, minta saya call AGM company T sebab nak bincang tentang second offer option dari company T, saya jadi serba salah sebab saya dah sign agreement dengan company P. Hari ini saya kena detailkan dari segi gaji dan position yang saya minta kat company T, kalau dia orang boleh terima gaji dan position yang saya minta insyAllah saya pertimbangkan semula untuk resign, yang lucunya surat resignation saya kat company T dah diapprove HR company T.

Semoga Allah beri saya petunjuk untuk choose company yang mana satu.

Satu lagi freelance project - ItemBanking

Sabtu lepas saya hadir satu meeting/presentation untuk satu lagi project freelance - ItemBanking. Alhamdulillah selepas tamat project freelance ACMS, dapat lagi satu freelance project.

Cuma kali ini saya tidak akan terlibat secara langsung dalam UI Development, dimana UI part akan di buat oleh staff company tersebut, cuma saya kena juga train beliau untuk faham serba sedikit process/methodology saya akan guna dan juga bagaimana unutk guna API.

InsyAllah saya target unutk habiskan project nie dalam masa 2 bulan.

Thursday, July 20, 2006

SOC Application - Make it simple

Saya dapat beberapa feedback dari member satu office yang terlibat dalam project nie, design model saya sebelum nie dah masuk part yang agak complex , so saya fikir saya perlu jadikan design tersebut lebih simple (KISS) "Keep It Simple Stupid". Kemungkinan ada yang dah biasa dengar KISS punya cara atau kalau dari XP (Extreme Programming) "Do the simple thing that could posibble work".

Ok berbalik semula kepada SOC Application, bila saya review balik design model saya..memang saya perhatikan saya dah terover design pada peringkat awal, dan perkara ini bukan nyer satu yang buruk tapi menjadi leceh sedikit bila masuk bab test.Jadi saya fikir saya perlu redesign semula design SOC model agar nampak lebih simple dan tambah complex dari masa kesemasa. Cuba ingat semula use case saya memang cukup simple iaitu unutk create new docket yang merekodkan sesuatu masalah yang berlaku di datacenter dan juga merekodkan product apa yang terlibat. Jadi apa masalah dengan design awal saya dahulu? Design awal saya dahulu diperingkat permulaan saya dah define a few business rules yang agak complex seperti ProblemSpecification. ProblemSpecification tidak perlu diletakkan dahulu kerana perkara pertama yang kita perlu lakukan ialah create Docket baru untuk DataCenter dan Product yang bermasalah.

Jom Modeling
Dari use case tersebut terdapat 3 entity iaitu
-Docket
-DataCenter
-Product

Entity yang lain yang agak tersembunyi ialah Location. Setiap DataCenter mempunyai Location, dimana didalam satu Location boleh ada 0..* DataCenter. Entity location akan lebih jelas apabila kita mula design model. Perlu diingat, kita boleh pada bila-bila masa untuk tidak memasukkan object-object yang apabila kita design menjadikan sesuatu menjadi lebih komplex.

Design awal model.



Dari gambar design model diatas, apa yang boleh kita ceritakan ialah Location boleh mempunyai 0,1 atau lebih Docket pada satu-satu masa iaitu one-to-many manakala pada view Docket pula ialah hanya boleh ada 1 Location pada satu-satu masa.Location juga boleh mempunyai 0,1 atau lebih DataCenter pada satu-satu masa dan DataCenter mempunyai 0,1 atau lebih Product dan begitu juga sebalinya.

Ini ialah UML Diagram bukan database schema, jadi design ini tidak menggambarkan bagaimana object akan di "persist" ke dalam database sebaliknya design ini menunjukkan bagaimana kelakuan aplikasi yang kita bina.

Ok dari design model ada part yang kita boleh improvekan lagi, perlu diingat bidirectional association menjadikan object bertambah complex.Perhatikan relation antara Docket dan Location. Location akan ada senarai Docket, tetapi adakah kita perlukan semua rekod Docket dari Location. Pada kenyataan memang Location mempunyai senarai Docket, tapi kita lebih berminat hendak mengetahui Location yang mana untuk specific Docket, jadi Docket mempunyai relation pada Location tapi bukan sebaliknya.

Lepas itu, kita tengok antara Location dan DataCenter, Location mempunyai one-to-many dengan DataCenter, adakah kita hendak senarai DataCenter tanpa mengetahu dimana lokasi DataCenter tersebut? Tidak bukan, DataCenter tanpa context Location tak memberi apa-apa maklumat jadi DataCenter termasuk dalam Aggregate Boundry Location ini bermakna senarai DataCenter perlu dicapai melalui Location.DataCenter dan Product pula mempunyai hubungan one-to-many tapi yang penting DataCenter tahu Product apa yang terdapat dalam DataCenter, manakala maklumat Product mengetahui dimana ianya berada pada saya tidak penting dalam context Docket.

Dari perbincangan saya design model yang dapat saya buat adalah seperti dibawah.


perlu diingat kita boleh dapat 2 perspektif view design model dari keseluruhan process dan lagi satu apabila process create. Ok setakat yang kita bincangkan dan dari gambaran design model yang telah saya buat, design model yang ada merupakan gambaran dari view keseluruhan. Jika view create kita ambil kita perlu lihat ianya sebagai berikut.

Satu Docket akan akan hanya ada untuk satu Location dan merekodkan problem untuk satu DataCenter yang mengandungi satu Product yang bermasalah.Gambaran design untuk view dari perspektif create.



Seterusnya apabila kita dah dapat lihat dari view perspektif create dengan lebih jelas adalah mudah untuk kita memahami process seterusnya.Location,DataCenter dan Product merupakan object-object yang kebiasaanya mempunyai value, ini bermaksud bila kita hendak create Docket, value Location,DataCenter dan Product bukannya dapat dari process create Docket sebaliknya ia adalah dari process Admin Management. Kita hanya perlu dapatkan value tersebut dari Relational Database,FileSystem atau Storage System.Ok jadi disini saya akan create satu Repository untuk dapat value-value Location,DataCenter dan Product. Dari design yang kita buat calon untuk kita adakan Repository ialah pada Location.Repository hanya ada pada Aggregate Root sahaja.



Apa yang anda fikir, adakah design ini boleh mencapai objektif use case kita? Saya tidak kata domain model design yang saya buat ini betul, dan macam maner saya nak mengetahui domain model design ini ok?Saya nak supaya kita dapat berfikir sedikit dimana problem yang timbul dalam design model ini. Semuanya nampak okkan?

Sebenarnya masalah yang timbul ialah hubungan antara Docket dan Location, walaupun hubungan ini betul, tapi ini tidak dapat menjawab use case kita.
Docket merekodkan fault problem unutk product yang berlaku di dalam sesebuah DataCenter, manakala DataCenter pula berada dalam Location tertentu. Jadi kita perlu tukar sedikit design tersebut.Jadi Docket tidak perlu tahu tentang Location dimana berlaku fault , tapi Docket perlu tahu Product yang mana satu bermasalah. Jika Docket ingin tahu Location, ia boleh minta dari DataCenter dimana Location tersebut.Jika ingin menegtahui DataCenter boleh dapatkan dari Product.

Thursday, July 13, 2006

SOC Application - Analisa Domain (Repository Dan Factory)

Senarai artikel berkaitan:
SOC Application - Requirement
SOC Application - Analisa Domain

Sehingga ketahap ini kita sudah cover a few pattern dalam DDD seperti Entity,ValueObject dan Aggregate. Terdapat beberapa pattern lain yang akan saya masukkan semasa tune Domain design ini.

Motif utama kita ialah untuk membolehkan kita create Docket. Jadi kita cuba buat adakah Domain yang telah design mampu untuk create Docket berdasarkan requirement yang ada. Setiap docket perlu ada startFaultTime dan endFaultTime. Perbezaan antara waktu docket dibuka dan ditutup penting untuk mendapatkan performance report.

Object Creation - Factory
Kita boleh create object dari contructor object sendiri atau kita boleh create melalui Factory. Saya suka untuk create object dari factory, sebab ada beberapa kelebihan, insyAllah pada artikel yang akan datang saya sentuh detail kelebihan tersebut. Ok dari domain design yang ada, saya perlu memilih dimana saya perlu mempunyai factory, biasanya factory akan hanya ada di root aggregate dan factory yang akan kawal association antara domain-domain yang akan dibina.



Test Driven Design - TDD
Saya akan masuk sedikit ke bahagian TDD, unutk test beberapa domain yang telah saya buat. Saya akan menggunakan NUnit unutk melakukan test fixture.

Perkara pertama saya saya ingin test ialah untuk create docket dgn minimum maklumat.
Terdapat 2 domain yang penting unutk bahagian ini iaitu Docket sendiri dan ProblemSpecification.

Ok, let's start.
Saya kena import dahulu NUnit library seperti berikut

using NUnit;
using NUnit.Framework;


Langkah seterusnya menulis code seperti berikut

using System;
using System.Collections.Generic;
using System.Text;
using SOCManagement.Core.TestDomain;
using SOCManagement.Core.TestFactory;
using NUnit;
using NUnit.Framework;

namespace SOCManagement.Core.TestUnit
{
[TestFixture]
public class FactoryTest
{
[Test]
public void CreateDocketTest()
{
ProblemSpecification problemSpecification = DocketFactory.CreateProblemSpecification("DataCenterA","ProductA",Convert.ToDateTime("01/01/2006 10:00:00"),Convert.ToDateTime("02/01/2006 08:30:00"));
Docket docket = DocketFactory.CreateDocket(problemSpecification);
Assert.IsNotNull(docket);
}
}
}


Dalam TDD, sequence ialah fail->pass->refactor->fail->pass..
Jadi this test code diatas akan memberi anda tanda merah iaitu fail. Kenapa? itu memang cara TDD :)...

Code diatas akan fail kerana anda masih lagi tiada code untuk domain-domain tersebut.Ok jom tulis class untuk domain-domain tersebut.
Pada tahap ini, layer between code belum disentuh. Saya akan tulis class-class tersebut dahulu, kemudian saya akan sentuh pembahagian layer-layer dan dimana hendak letak class-class domain tersebut.

Class ProblemSpecification
using System;
using System.Collections.Generic;
using System.Text;

namespace SOCManagement.Core.TestDomain
{
public class ProblemSpecification
{
private string _dataCenterName;
private string _productName;
private DateTime _startFaultTime;
private DateTime _endFaultTime;

public ProblemSpecification(string dataCenterName,string productName,
DateTime startFaultTime,DateTime endFaultTime)
{
this._dataCenterName=dataCenterName;
this._productName=productName;
this._startFaultTime=startFaultTime;
this._endFaultTime=endFaultTime;
}
}
}


Class Docket:
using System;
using System.Collections.Generic;
using System.Text;

namespace SOCManagement.Core.TestDomain
{
public class Docket
{
private ProblemSpecification _problemSpecification;

public Docket(ProblemSpecification problemSpecification)
{
this._problemSpecification = problemSpecification;
}
}
}


Class DocketFactory
using System;
using System.Collections.Generic;
using System.Text;
using SOCManagement.Core.TestDomain;

namespace SOCManagement.Core.TestFactory
{
public class DocketFactory
{
public static Docket CreateDocket(ProblemSpecification problemSpecification)
{
return new Docket(problemSpecification);
}

public static ProblemSpecification CreateProblemSpecification(string dataCenterName,string productName,DateTime startFaultTime,DateTime endFaultTime)
{
return new ProblemSpecification(dataCenterName,productName,startFaultTime,endFaultTime);
}
}
}


Selepas semua class selesai ditulis, anda boleh compile dan run NUnit.