cub-e.net

just coding...

Veri Turleri Hakkinda

Microsoft Dynamics CRM 2011 ve Microsoft Dynamics CRM Online'da programlama modeli .NET'in temel türlerini kullanacak şekilde değiştirildi.

Bu tabloda beni en çok şaşırtan ise Customer, Lookup, Owner nesnelerinin artık EntityReference türünden sadece bir değer almaları. CRM'i yeni öğrenler için işler gerçekten kolaylaştırılmış. Artık kod yazarken CRM ile başlayan nesnelerimiz yok.

Aşağıdaki tablo bize Microsoft Dynamics CRM 4.0 ile CRM 2011, 2013 ve 2015 arasındaki tür dönüşümünü göstermektedir.

Özellik Adı

Microsoft Dynamics CRM 2011, 2013, 2015 Türü

Microsoft Dynamics CRM 4.0 Türü

AttributeTypeCode.Boolean

bool ya da System.Boolean

CrmBoolean

AttributeType.CalendarRules

EntityCollection

DynamicEntity[] or calendarrule[]

AttributeType.Customer

EntityReference

Customer

AttributeType.DateTime

System.DateTime

CrmDateTime

AttributeType.Decimal

decimal ya da System.Decimal

CrmDecimal

AttributeType.Double

double ya da System.Double

CrmFloat

AttributeType.Integer

int ya da System.Integer

CrmNumber

AttributeType.Internal

System.Object

Kayıtlarda Kullanılmaz

Kayıtlarda Kullanılmaz.

AttributeType.Lookup

EntityReference

Lookup

AttributeType.Memo

string ya da System.String

System.String

AttributeType.Money

Money

CrmMoney

AttributeType.Owner

EntityReference

Owner

AttributeType.PartyList

EntityCollection or ActivityParty[]

activityparty[] or DynamicEntity []

AttributeType.Picklist

OptionSetValue

Picklist

AttributeType.PrimaryKey

System.Guid

Key

AttributeType.String

System.String

System.String

AttributeType.State

OptionSetValue yada oluşturulan enumeration kullanılmalı

EntityNameStateInfo

AttributeType.Status

OptionSetValue ya da int

Status

AttributeType.Uniqueidentifier

System.Guid

UniqueIdentifier

AttributeType.Virtual

System.Object

Kayıtlarda Kullanılmaz

Kayıtlarda Kullanılmaz

Eski Tür

Yeni Tür

CrmAttributeType Class (MetadataService)

Microsoft.Xrm.Sdk.Metadata.AttributeTypeCode

Moniker Class (CrmService)

Microsoft.Xrm.Sdk.EntityReference

SecurityPrincipal Class (CrmService)

Microsoft.Xrm.Sdk.EntityReference

 

OptionSetValue

OptionSetValue’a değer atamak için ilk önce OptionSetValue türünden bir nesne oluşturmanız gerekmektedir.  Burada dikkat çekmek istediğim konu ise eğer state alanı ile çalışacaksanız (yani firma için aktif/pasif, teklif için açık/kazanıldı/kaybedildi gibi) early-bound sınıflarda bunlar için mutlaka bir enumaration oluşturulmakta. Ama late bound sınıflarda bu durumu programcı yönetmektedir.

Örnek olarak adres üzerindeki bir optionset alana değer atama aşağıdaki şekilde olmaktadır;

OptionSetValue osv = new OptionSetValue(1);

contact.Attributes["address1_freighttermscode"] = osv;

 

EntityReference

CRM sisteminde iki entity’yi birbirine bağlamak için lookup nesnesini kullanmak zorundayız. Lookup’lar üzerinde programatik işlem yapabilmek için EntityReference nesnesini kullanmaktayız. Bu nesneye Lookup alana reference vermek istemiz nesnenin türü ve Id’sini vermemiz gerekmektedir.

Aşağıdaki örnekte parentAccountId atama yapılacak nesnenin guid cinsinden Id’si olmalı;

EntityReference parentaccountid = new EntityReference("account", parentAccountId));

accountEntity.Attributes["parentaccountid"] = parentaccountid;

ioService.Update(accountEntity);

Null Değer Atama

CRM 4.0’dan farklı olarak .Net Type türleri kullanıldığı için null değer atama işlemi artık sadece alana değer vermekten ibaret oldu. İşte birkaç örnek;

EntityAdi.IndustryCode = null;

EntityAdi.AccountId = Guid.Empty;

EntityAdi.AccountNumber ="";

EntityAdi.Address1_Country = String.Empty;

Dynamics CRM 2011'de Türlerin Kullanımı

 

Microsoft Dynamics CRM 2011 ve Microsoft Dynamics CRM Online'da programlama modeli .NET'in temel türlerini kullanacak şekilde değiştirildi.

Bu tabloda beni en çok şaşırtan ise Customer, Lookup, Owner nesnelerinin artık EntityReference türünden sadece bir değer almaları. CRM'i yeni öğrenler için işler gerçekten kolaylaştırılmış. Artık kod yazarken CRM ile başlayan nesnelerimiz yok.

Aşağıdaki tablo bize Microsoft Dynamics CRM 4.0 ile CRM 2011 arasındaki tür dönüşümünü göstermektedir.

Özellik AdıMicrosoft Dynamics CRM 2011 TürüMicrosoft Dynamics CRM 4.0 Türü

AttributeTypeCode.Boolean

bool ya da System.Boolean

CrmBoolean

AttributeType.CalendarRules

EntityCollection

DynamicEntity[] or calendarrule[]

AttributeType.Customer

EntityReference

Customer

AttributeType.DateTime

System.DateTime

CrmDateTime

AttributeType.Decimal

decimal ya da System.Decimal

CrmDecimal

AttributeType.Double

double ya da System.Double

CrmFloat

AttributeType.Integer

int ya da  System.Integer

CrmNumber

AttributeType.Internal

System.Object

Kayıtlarda Kullanılmaz

Kayıtlarda Kullanılmaz.

AttributeType.Lookup

EntityReference

Lookup

AttributeType.Memo

string ya da System.String 

System.String

AttributeType.Money

 Money

CrmMoney

AttributeType.Owner

EntityReference

Owner

AttributeType.PartyList

 EntityCollection or ActivityParty[]

activityparty[] or DynamicEntity []

AttributeType.Picklist

OptionSetValue

Picklist

AttributeType.PrimaryKey

System.Guid

Key

AttributeType.String

System.String

System.String

AttributeType.State

OptionSetValue yada oluşturulan enumeration kullanılmalı

EntityNameStateInfo

AttributeType.Status

OptionSetValue ya da int

Status

AttributeType.Uniqueidentifier

System.Guid

UniqueIdentifier

AttributeType.Virtual

System.Object

Kayıtlarda Kullanılmaz

Kayıtlarda Kullanılmaz


Eski TürYeni Tür

CrmAttributeType Class (MetadataService)

Microsoft.Xrm.Sdk.Metadata.AttributeTypeCode

Moniker Class (CrmService)

Microsoft.Xrm.Sdk.EntityReference

SecurityPrincipal Class (CrmService)

Microsoft.Xrm.Sdk.EntityReference

OptionSetValue

OptionSetValue’a değer atamak için ilk önce OptionSetValue türünden bir nesne oluşturmanız gerekmektedir.  Burada dikkat çekmek istediğim konu ise eğer state alanı ile çalışacaksanız (yani firma için aktif/pasif, teklif için açık/kazanıldı/kaybedildi gibi) early-bound sınıflarda bunlar için mutlaka bir enumaration oluşturulmakta. Ama late bound sınıflarda bu durumu programcı yönetmektedir.

Örnek olarak adres üzerindeki bir optionset alana değer atama aşağıdaki şekilde olmaktadır;

OptionSetValue osv = new OptionSetValue(1);

contact.Attributes["address1_freighttermscode"] = osv;

 

EntityReference

CRM sisteminde iki entity’yi birbirine bağlamak için lookup nesnesini kullanmak zorundayız. Lookup’lar üzerinde programatik işlem yapabilmek için EntityReference nesnesini kullanmaktayız. Bu nesneye Lookup alana reference vermek istemiz nesnenin türü ve Id’sini vermemiz gerekmektedir.

Aşağıdaki örnekte parentAccountId atama yapılacak nesnenin guid cinsinden Id’si olmalı;

EntityReference parentaccountid = new EntityReference("account", parentAccountId));

accountEntity.Attributes["parentaccountid"] = parentaccountid;

ioService.Update(accountEntity);

Null Değer Atama

CRM 4.0’dan farklı olarak .Net Type türleri kullanıldığı için null değer atama işlemi artık sadece alana değer vermekten ibaret oldu. İşte birkaç örnek;

Entity.IndustryCode = null;

Entity.AccountId = Guid.Empty;

Entity.AccountNumber ="";

Entity.Address1_Country = String.Empty;


Bir makalemizin daha sonu geldik :)

 

Microsoft Dynamics CRM 4.0 (Titan) 'a İlk Bakış

Microsoft Dynamics CRM 4.0 (Titan) 'a İlk Bakış

CRM Titan birçok yenilik ile geliyor. Bu yazım kod geliştirme değil teknik bir inceleme olacak sadece. İnceleme yapacağımız platform Microsoft'un çıkarmış olduğu bir Virtual PC image'i üzerinde olacak.

Ürün hakkında detaylı bilgiye;
http://www.microsoft.com/dynamics/crm/default.mspx linkinden,
CRM 4.0 90 günlük Trial versiyonuna ise;
http://www.microsoft.com/downloads/details.aspx?FamilyID=a9c110fd-aac8-4d2a-b401-7801b1866e82&DisplayLang=en linkten ulaşabilirsiniz.
Yeni arayüzün tasarlanmasında Windows Vista ve Office 2007 etkileri çok fazla göze çarpıyor. Yeni arayüzü oldukça şık olmasına karşı sürekli yukarıda duran "Microsoft Dynamics CRM" yazan "Welcome Başlığı" ekranda gereksiz bir yer kaplamakta. Sağ kısımda ise eskiden olduğu gibi sistemi kullanan kullanıcının ismi yazmakta. Bu başlık kısmının altında duran ve eskiden düğmelerden oluşan toolbarı küçültüp içeriği menülerin içine yerleştirmişler.



Asıl büyük değişiklik formların tasarımlarında olmuş. Daha şık bir görüntüye sahip olmuşlar. Vista tarzı yuvarlak Dynamics simgesi, her forma ait ayrı bir icon ve navigation bardaki değişiklik ilk göze çarpanlar arasında.



Gelen yeni özellikler ise;

  1. Multi Tenancy: Birden fazla firma için CRM'in host edilebilir bir yapıya geçmiş olması CRM 4.0 ile gelen en önemli özellik.CRM Live projesi kapsamında geliştirilen ve birden fazla organizasyonu bir CRM içerisinde birleştiren bu yeni yapı, küçük firmalar için kurulum gerektirmeyen ve 7x24 destek verilen bir servis mimarisi anlamına geliyor.
    Yani yakında KOBİ'ler için CRM Hosting hizmeti veren firmalar göreceğiz. Bu kiralama modeli sayesinde KOBİ'ler profesyonel anlamda CRM hizmetini çok daha ucuza maledeceklerdir.

  2. Multi Language: Kendi CRM serverınıza MUI paketleri kurarak CRM'i çok dilli bir yapıya çevirebilirsiniz ve kullanıcı hangi dille çalışacağını kendi seçebilir. CRM 3.0'da ayrı dillerin ayrı birer paket olması ve diller arası geçişin olmayışından sonra bu özellik hem partnerları hem de kullanıcıları dil karmaşasından kurtarmış oluyor.


  3. Multi Currency: Birden çok para birimini destekleyen yapı CRM 4.0'da kullanıcıları en çok sevindirecek özellik gibi görünüyor. CRM 3.0'da birden çok para birimini desteklemek için sisteme takla attrırır. Hatta çoğu zaman bir para birimini seçer sistemi onun üzerine inşa ederdik. Bu sorun çözülmüş oldu ama burada başka bir sorun ortaya çıktı. Para birimlerinin tarihsel bir geçmişe sahip değil. Bunun içinde yakında birçok add-on çıkacaktır.


  4. Resource Center: Topluluk olaylarının takibi için geliştirilmiş yeni arabirim.
  5. Duplicate Detection: Artık istediğimiz entity üzerine çift kayıt oluşturma kontrolü koyabiliriz. Bu sayede CRM içerisine çift kayıt kontolü yapmak için kod yazmamıza gerek kalmadı. Keni kurallarınızı belirleyerek çift kayıt kontrolü oluşturabilirsiniz.


  6. Workflows: Workflowlar artık CRM arayüzü içinden geliştirilebilir bir yapı kazandı. Artık Workflow Manager gibi ek bir program kullanmamıza gerek kalmadı. Yeni workflow mimarisi artık IE içerisinden kontrol edilebilir bir yapının yanı sıra her entity içerisinden erişilebilir ve kontrol edilebilir bir yapı kazanmış.


  7. Many-to-Many Relationships: Eskiden çoka-çok mimari oluşturmak için bir entity daha açar, bağlayacağımız nesneleri burada birbirine bağlar bir link oluştururduk. Artık CRM 4.0 bu yapıyı kendisi oluşturuyor ve arka tarafta yani database üzerinde bizim için ek bir tablo açarak öğeleri kendisi birbirine bağlayabiliyor.
  8. System-System Relationships: Eskiden sistem tabloları arasında bağlantı oluşturamazdık. Yeni mimari bunu da olanaklı kılıyor.


  9. Multiple Entity Selection in View: Çok faydalı özelliklerden biri de bir view içerisinde birden çok entity ile ilişki kurabiliyor olmamız. Önceden bir entity ile ilişkili başka bir entity üzerinde view yaptığımızda, öteki entity'deki alanı view'ini görmek istediğimiz entity üzerinde yeniden açar buraya bilgi girişi yapılmasını sağlardık. Bu sayede artık çok daha az alanlar gerçek relationship yapıyı kullanabilir hale geldik.


  10. Report Wizard: Rapor Sihirbazı ile artık CRM içerisinden, raporların dillerini,para birimini değiştirebilir hatta yeni bir rapor oluşturabilirsiniz.


  11. Yeni Lookup Alanları : Lookup alanlarına yeni bir özellik katılmış. Artık üzerlerinde yazı yazılabiliyor ve entere bastığınızda database içerisinde o alanla eşleşen kayıtları getirebiliyor.

Barış KANLICA
Yazılım Uzmanı – Software Specialist
brsk@e-kolay.net
www.cub-e.net