Posts Tagged ‘ Dynamics 365 Insights Power BI

X++ Nesne İsimlendirme Kuralları Nelerdir?

Bu yazıda Dynamics 365 Finance and Operations geliştirmelerinde kullanılan yazılım dili olan X++’ın nesne isimlendirme standartlarından bahsedeceğim. İsimlendirme bir uygulamanın kod kalitesini gösteren en temel konulardan biridir. Doğru bir isimlendirme standardı olmayan bir uygulamanın sorunlu bir yapıya dönüşmesi çok daha muhtemeldir.

Genel kurallar şöyle sıralayabilirim.

  • Tüm isimler ABD İngilizcesi olmalıdır. Bunun sebebi genel bir standart oluşması ve projeye destek verecek mühendislerin daha kolay anlayabilmesidir.
  • Mantıksal ve açıklayıcı adlar kullanılmalıdır. Nesnenin adıyla yaptığı iş uyumlu olmalıdır. Mesela günlük aktiviteleri tutan bir tablo için: DmrActivityListTable
  • İsimlerde 40 karakterlik bir sınırı vardır.
  • Uygulama Nesne Ağacındaki (AOT) ve X++ kodundaki adlar, ABD İngilizcesi kullanılarak adlandırılır ve kullanıcı ara yüzündün de gösterilen etiketlerle uyumlu olmalıdır.
  • İsimlendirmede yazım hatası olmamalıdır. Ayrıca yapılan işe uygun jargonlar kullanılmalıdır.
  • İlişkili değişken ve nesne isimleri tüm uygulama boyunca aynı olmalıdır.
  • AOT içindeki nesneler tekil isime sahip olmalıdır.
  • Kullanıcı ara yüzünde görünen tüm metinler bir etiket kullanılarak tanımlanmalıdır.
  • Yeni nesneler için bir ön ek tanımlanmalı ve tüm nesnelerde kullanılmalıdır. Genelde 2 veya 3 karakterlik bir ön ek tespit edilir. Ben firmamda Dmr kullanıyorum.
  • Tablo, EDT, Enum veya Sınıf ile aynı ada sahip olamaz.
  • CamelCase kullanılır. Örnek vermek gerekirse: Tablo: LedgerJournalTrans. Değişken: amountCurTotal. EDT: CustAcount
  • Alt çizgi (_) sadece türetilmiş nesnelerde, metoda parametre olarak gelen değişkenlerde kullanılır ve lokalizasyon eklerinde kullanılır.
  • Bir etiketin ilk harfi büyük olmalı ve diğer tüm harfler küçük olmalıdır.

Mümkün olduğunca nesne adları üç temel bileşenden hiyerarşik olarak oluşturulmalıdır:

{İş alanı adı} + {İş alanı açıklaması} + {sınıf için gerçekleştirilen eylem, tablo için içerik}

Örnekler:

  • CustInvoicePrintout
  • PriceDiscAdmCopy
  • PriceDiscAdmDelete
  • PriceDiscAdmSearch
  • PriceDiscAdmName
  • LedgerJournalTable
  • LedgerJournalTrans

Kısaltmalardan mümkün olduğunca kaçınmak gerekiyor. Eğer kısaltma kullanacaksanız tüm sistemde aynı kısaltmayı kullanmalısınız. Sistemde bulunan bazı kısaltmalar şunlardır:

  • Customer -> Cust
  • Payment -> Paym
  • Bill of material -> BOM
  • Number -> Num
  • Warehouse Management System -> WMS

Değişken isimlendirmede kısaltma veya ön ek kullanılmamalıdır. Değişkenin kullanım amacına uygun isimlendirme yapılmalıdır.

Doğru örnekler:

  • CustTable                           custTableUpdate;
  • CustInvoiceJour               custInvoiceJour;
  • CustAcount                       custAcountInvoice;
  • Amount                              totalTaxAmount;

Hata örnekler:

  • CustTable                           ct;
  • CustInvoiceJour               ciJour;
  • CustAcount                       customer;
  • Amount                              amount1;

Extension için ayrı bir makale bile yazılabilir. Hala netleşmeyen konular olmakla birlikte temel olarak şu makaleyi takip edebilirsiniz. Burada önemli olan tüm geliştiricilerin aynı standardı kullanması. Aksi durumda kod tekrarı ve gereksiz zaman kaybı oluşabilir.

Bu yazıda isimlendirme standartlarından bahsettim. Birçok kural aslında genel yazılım kuralı farklılaşanlar ürünün getirdiği standartlar, bunlar doğrudur diğer kullanımlar hatalıdır diye bir durum yok aslında. Herkesin farklı bir yoğurt yiyişi olabilir ama Dynamics 365 bir ürün ve standartları var, kendi standartlarınızı buraya uygulamamalısınız. Sonuçta burası bir uygulama ve biz ona eklemeler yapıyoruz. Dolayısıyla standartlarına uymak zorundayız. Bu konu gerçekten çok önemli doğru isimlendirme olmayan bir kodda eklem yapmak hata ayıklamak gerçekten çok can sıkıcı oluyor.

Selamlar.

www.fatihdemirci.net

TAGs: Microsoft Life Cycle Services, LCS, Azure, Azure DevOps, Nameing, Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365, Dynamics 365 Insights Power BI, Power Automate, Power Apss, Power Virtual Agents, Dynamics 365 nedir, Dynamics 365 ERP, Dynamics 365 CRM

Dynamics 365 Finance and Operations Bussines Events Nedir?

Bu yazıda Bussines Event nedir ne işe yarar anlatmaya çalışacağım. Bussines Event diğer sistemlerin Finance and Operations’dan bilgilendirme almasını sağlayan bir yapıdır. Dış sistemlere bu bilgilendirme, içerde bir olay olduğunda tetiklenir. Bu olay ya bir iş akışı işlemleridir ya da iş akışı dışındaki olaylardır. Bütün bu tipler için tetikleme mekanizmaları var ayrıca yeni durumlar için eklemeler yapabiliyoruz. Bu yapıyı bir entegrasyon gibi düşünmemek lazım. Büyük veri için uygun bir altyapı değil. Bussines Event iş olayları olarak çevriliyor.

Business events catalog’a System administration > Set up > Business events yoluyla ulaşabilirsiniz. Bu formda ulaşılabilen Bussines Event’leri görebilirsiniz.

Resim-1

Read more

Dynamics 365 Finance and Operations Etiket(Label) Dosyası Nasıl Oluşturulur?

Bu yazıda Dynamics 365 Finance and Operations için yeni bir etiket dosyası nasıl oluşturulur anlatmaya çalışacağım. Etiketler sistemin çoklu dile destek verebilmesini sağlayan yapıdır. Bizde yaptığımız geliştirmelerde yeni etiketlere ihtiyaç duyarız. Bunun için genelde proje başlangıcında bir etiket dosyası oluşturulur ve tüm yazılımcılar bu dosyayı kullanırlar.

Örnek bir Etiket dosyası oluşturalım. Yeni bir nesne ekleme formunu açıyoruz. Label File seçip Add diyoruz. Bu bize bir sihirbaz ara yüzü açacak. Bunun açılması biraz uzun sürebiliyor.

Resim-1

Read more

Dynamics 365 Finance and Operations Canlıya Geliştirme Nasıl Alınır?

Bu yazıda Dynamics 365 Finance and Operations Production ortamına geliştirme nasıl taşınır anlatacağım. Önceki yazılarımda Azure DevOps kullanarak Build işlemini ve oluşan paketin Asset library nasıl yüklendiğini anlatmıştım. Canlıya alım için teste alınmış bir Software deployable package tespit edip Release Candidate olarak işaretlemek gerekiyor. Ben örnek olarak bir kayıt seçtim.

Resim-1

Read more

Dynamics 365 Finance and Operations Ara Yüz Özellikleri?

Bu yazıda Dynamics 365 Finance and Operations ara yüzlerinin özelliklerinden bahsedeceğim. Öncelikle ara yüzde yapılan bu işlemler kullanıcı seviyesindedir. Diğer kullanıcıları etkilemez.

Herhangi bir nesneye sağ tıkladığınızda form ismi ve nesnenin ismini görebilirsiniz. Bu bilgilerle geliştirme ortamından aradığınız nesneyi daha kolay bulabilirsiniz.

Resim-1

Read more

Dynamics 365 Finance and Operations Trace Parser Nedir ve Nasıl Kullanılır?

Bu yazıda Dynamics 365 Finance and Operations uygulamasında performans sorunlarının tespiti için çok kullanışlı bir araç olan Trace Parser’dan bahsedeceğim. Bir performans sorunun tespiti genelde zor bir işlemdir. Birçok sebep olabilir. Tecrübenize göre baktığınızda temel sorunları tespit edebilirsiniz ama karmaşık form ve sınıflarda tespit gerçekten çok zaman alabilir. Trace almak ve analizi yapmak işi çok kolaylaştırıyor. Dynamics 365 Finance and Operations uygulamasında gömülü olarak Trace alma özelliği mevcut. Alınan bu Trace dosyasını Trace Parser kullanarak analiz ediyoruz.  Bir örnekle açıklamaya çalışacağım.  Mesela satış siparişleri detay formunun açılması çok uzun sürüyor diye şikâyet aldım ve burayı incelemek ve sorunu tespit etmek istiyorum.

Trace alarak işe başlayalım. Soru işareti ikonundan Trace diyorum.

Resim-1

Read more

Toplu iş Geçmişi Nasıl Temizlenir?

Bu yazıda Dynamics 365 Finance and Operations toplu iş geçmişini(Batch job history) periyodik olarak nasıl silebileceğinizi anlatacağım. Bunun için standartta olan bir temizle toplu işini kullanacağım.

Modules > System Administration > Periodic tasks > Batch job history clean-up (custom) yolunu kullanarak sınıfı çalıştırıyoruz.

Resim-1

Read more

SysOperation Framework İle Toplu İş Nasıl Oluşturulur?

Bu yazıda SysOperation kullanarak Dynamics 365 Finance and Operations için yeni bir toplu iş (Batch Job) nasıl oluşturulur anlatmaya çalışacağım.  SysOperation RunBaseBatch’in daha gelişmiş hali diyebiliriz. Birçok farklı kullanımı var. Bu örnekte normal toplu iş olarak kullanımını anlatacağım. Yapısına gelecek olursak SysOperation MVC (Model–View–Controller) design pattern’ı kullanır. Bu yapının temel sınıfları şunlardır:

Service: Servis sınıfı SysOperationServiceBase sınıfından türetilir. İşlemin yapıldığı sınıftır. Kodlarımız bu sınıfta olmalı.

Data Contract: Özellikleri (attributes) tanımladığımız model sınıfıdır. Diyalogdan veri almak için DataContractAttribute attribute kullanılır.

Controller: Kontrol sınıfı SysOperationServiceController sınıfından türetilir. Toplu işle ilgili bilgileri tutar. Diyalog ve progress bar gibi.

UI Builder: UI Builder sınıfı SysOperationAutomaticUIBuilder sınıfından türetilir ve diyaloglara daha gelişmiş ara yüzler sağlamak için kullanılır.

Bu örnekte ilk 3 sınıfı kullanarak RunBaseBatch ile yaptığımız örneğin aynısı yapacağım. Öncelikle yeni bir proje oluşturuyorum.

Resim-1

Read more

RunBaseBatch Framework İle Toplu İş Nasıl Oluşturulur?

Bu yazıda Dynamics 365 Finance and Operations için yeni bir toplu iş (Batch Job) nasıl oluşturulur anlatmaya çalışacağım. RunBaseBatch kullanarak bir örnek oluşturacağım. İleriki yazılarımda SysOperation ile de örnekler vereceğim. Toplu iş nedir ona bakalım. Bir işi farklı sunucuda ve belli zamanda istersek tekrarlayan şekilde çalıştırmaya yarayan bir alt yapı diyebiliriz. En basit örneği vereyim. Merkez bankası her gün kurları belli saatte açıklıyor. Sizin bu değerleri alıp sisteme kaydetmeniz gerekiyor. Bunun için bir sınıf yazdınız ve bu sınıf servise bağlanıyor ve değerleri alıyor. Ancak bunun her gün aynı saatte tetiklenmesi lazım. İşte burada toplu iş devreye giriyor ve size bu ayarları yapma imkânı veriyor.

Bu örnekte çok basit bir sınıf oluşturup çalıştıracağız. Öncelikle yeni bir proje oluşturuyorum.

Resim-1

Read more

Dynamics 365 Finance and Operations Segregation of Duties Nedir?

Dynamics 365 Finance and Operations Segregation of Duties Nedir?

Segregation of Duties görev ayrılığı olarak çevriliyor. Şöyle izah etmeye çalışayım. İki kritik görevi(Duty) aynı kişide toplanmasın istiyorsunuz örneğin fatura işleme ve ödeme çıkma gibi iki görevin aynı kişide olmaması gerekiyor. Binlerce kişinin çalıştığı bir firmadasınız ve bunu takip etmek belli bir aşamada mümkün olmuyor işte tam burada SoD devreye giriyor. Duty üzerinden yaptığınız bir tanım size bu tip durumlar için uyarı veriyor ve kontrol etme imkânı sağlıyor.

Önceki yazılarda kullandığımız güvenlik nesnelerini kullanarak bir örnek yapalım. Security Configuration formunu açıyoruz.

Resim-1

Segregation of duties sekmesinden Segregation of duties rules butonuna tıklıyoruz. Bu form direk menüde de var. Resim-9’da görebilirsiniz.

Resim-2

Açılan formda henüz kayıt yok New ile bir tane kayıt oluşturalım.

Resim-3

Bir isim veriyoruz ve iki tane Duty seçmemiz gerekiyor. Ben örnek iki Duty seçtim. Dikkat ettiğim tek konu bu iki Duty hangi rolde kullanılıyor biliyorum. Örneği gösterebilmek için ihtiyacım olacak. Tabi siz iş ihtiyacına göre bu tanımı yapacaksınız.

Resim-4

Kaydettikten sonra test kullanıcıma geliyor. Şu anda olan rolden dolayı FD Müşteri listeleme görevi ekli. Yeni bir rol ekleyip Customer Invoicing içeren bir rol seçiyorum. Ekle dediğimde bir çakışma oluştuğu uyarısı geliyor. Eğer Yes dersem benim için bir çözüm kaydı oluşturacak.

Resim-5

Oluşan kayıtta bu işlemin bilgileri var. Allow Assigment ile atamayı kabul edebilirim.

Resim-6

Kabul edersem aslında kuralı ezmiş oluyoruz bu yüzden bir açıklama soruyor. Girdikten sonra rolü eklemiş olduk. İstersek engelleyebilirdik.

Resim-7

Yeni bir SoD oluşturduğunuzda bu kurala uymayan durumlar var mı diye kontrol edebilirsiniz. Benim kurala uymayan bir durum var ama ona bir ezme kaydı oluşturduk bu yüzden burada gelemdi.

Resim-8

Oluşan kayıtları Resim-9’daki menüden takip edebilirsiniz.

Resim-9

Bu yazıda Segregation of Duties nedir kısaca anlatmaya çalıştım. Çok güzel bir özellik olmakla birlikte hala çok eksiği var. Örneğin sadece Duty ile çalışıyor ama Role atan direk Privilege’lar için bir çözüm yok. Role eklerken soruyor ama sonrasında değişen görev içeriklerini kontrol eden bir mekanizması yok. Kullanmak mümkün özellikle Duty haricinde yetki tanımı yapmaz Duty’lerinizi doğru bir mantıkta oluşturursanız çok kolay kullanabilirsiniz. Bu özelliğe hala yatırım yapılmaya devam ediliyor kısa sürede çok daha gelişmiş bir hala geleceğini düşünüyorum.

Selamlar.

www.fatihdemirci.net

TAGs: Microsoft Life Cycle Services, LCS, Azure, Azure DevOps, Segregation of Duties, Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365, Dynamics 365 Insights Power BI, Power Automate, Power Apss, Power Virtual Agents, Dynamics 365 nedir, Dynamics 365 ERP, Dynamics 365 CRM

Page 1 of 812345...Last »

Türkiye'nin en doğru, dolu dolu ve hatasız anlatımları ile teknik yazılarına, makalelerine, video'larına, seminerlerine, forum sayfasına ve sektörün önde gelenlerine ulaşabileceğiniz teknik topluluğu, MSHOWTO