Bu makalemizde Microsoft Windows Vista ile hayatımıza hızlı bir giriş yapan Gadget’ı kullanarak Microsoft Dynamics CRM için Account ( Firmalar) ve Contacts ( İlgili Kişileri ) listeleyebileceğimiz bir Gadget hazırlayacağız. Öncelikle Gadget'imizin yer alacağı dizine gidelim. Bunun için çalıştır'a aşağıdaki dosya yolunu yazıp boş bir klasör oluşturalım. %userprofile%\AppData\Local\Microsoft\Windows Sidebar\Gadgets Biz Gadget’imizi hazırlayıp çalıştırdığımızda bu klasörün altına gidip baktığımızda orda olduğunu göreceğiz J Gadget'i oluşturmak için en kolay yöntem'i uygulayacağız. Bunun için bir xml ve iki html dosyası yeterli olacaktır. Öncelikle xml dosyamızı oluşturalım. Xml dosyasının ismi gadget.xml olmak zorundadır. Windows Sidebar buna göre neyi yükleyeceğini bilmektedir.
Ama unutulmaması gereken bir nokta : Gadget’in yüklü olduğu kullanıcının MS CRM’de tanımlı olması gerekmektedir. Aksi takdirde Gadget hiç bir işinize yaramaz.
Eğer dediklerimi uygularsanız sizinde aşağıdaki gibi Gadget’iniz dolu dolu gözükecektir J
Hadi Başlayalım :
İlk olarak temelimizi oluşturacak index.html dosyamızı hazırlayacağız. Burada javascript’in yeteneklerini konuşturacağız. Bunun için azcık google yardımı alıyoruz J
Index.html
// Javascript kullanarak Accounts ve Contacts için Tab’lar oluşturuyoruz.
<script type="text/javascript">
var stl=""
var bChecked=false
function handlelink(aobject)
{
stl=aobject.href
bChecked=(document.tabcontrol && document.tabcontrol.tabcheck.checked)? true : false
if (document.getElementById && !bChecked)
var theTab=document.getElementById("tablist")
var theTablinks=theTab.getElementsByTagName("A")
for (i=0; i<theTablinks.length; i++)
theTablinks[i].className=""
aobject.className="current"
document.getElementById("tabiframe").src=stl
return false
}
else
return true
</script>
Microsoft Dynamica CRM çok güçlü bir web servis API altyapısına sahip. Biz de bu sayede istediğimiz sorguları çekebiliyoruz. Çektiğim sorguları daha sonrasında parse edip istediğim sonuçları görüntüleyebiliyorum.
Accounts.html
// Bu sayfa sayesinde sistemde bize ait account’ları görüntüleyeceğiz
// Aşağıdaki url’yi sisteminizdeki ile değiştirmeyi unutmayın
var serverUrl = "http://danubecrm:5555/mscrmservices/2006";
// ‘Microsoft.XMLHTTP’ active object nesnesi MS CRM ile iletişimimizi sağlıyor
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.open("POST", serverUrl + "/crmservice.asmx", false);
xmlhttp.setRequestHeader("Content-Type", "text/xml; charset=utf-8")
xmlhttp.setRequestHeader("SOAPAction",
"http://schemas.microsoft.com/crm/2006/WebServices/RetrieveMultiple")
xmlhttp.send("<?xml version='1.0' encoding='utf-8'?>"+"\n\n"+"<soap:Envelope"+
' xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"'+
' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"'+
' xmlns:xsd="http://www.w3.org/2001/XMLSchema">'+
' <soap:Body>' +
' <query xmlns:q1=http://schemas.microsoft.com/crm/2006/Query
' xsi:type="q1:QueryExpression" xmlns="http://schemas.microsoft.com/crm/2006/WebServices">'+
' <q1:EntityName>account</q1:EntityName>' +
' <q1:ColumnSet xsi:type="q1:ColumnSet">' +
' <q1:Attributes>' +
' <q1:Attribute>accountid</q1:Attribute>' +
' <q1:Attribute>name</q1:Attribute>' +
' </q1:Attributes>' +
' </q1:ColumnSet>' +
' <q1:Distinct>false</q1:Distinct>' +
' </query>'+
' </soap:Body>'+
' </soap:Envelope>')
// Bir sonraki adımda bize geri dönen XML formatını sayfamızda görüntelenecek formata uygun hale getiriyoruz
var result = xmlhttp.responseXML.xml;
var BEs= result.split("<BusinessEntities>");
var BE = BEs[1].split("<BusinessEntity");
for (i = 0; i < BE.length; i++)
firstname = BE[i].indexOf("<name>")+6;
secondname = BE[i].indexOf("</name>");
firstid = BE[i].indexOf("<accountid>")+11;
secondid = BE[i].indexOf("</accountid>");
if (BE[i].substring(firstid,secondid).length > 0 )
// The URL below must also be changed to the users MSACRM server URL
document.writeln("<a href=\"http://danubecrm:5555/sfa/accts/edit.aspx?id=" +
BE[i].substring(firstid,secondid) + "\" target=\"new\"><font size=\"2px\"" +
"name=\"verdana\">" + BE[i].substring(firstname,secondname) + "</font></a><BR>");
//En sonunda da sayfamızda bunu çağırmaya sıra geldi
<body bgcolor="#eff3f7">
<script language="JavaScript" type="text/javascript">
AccessCRMWebServices() ;
</body>
Bu sayfa gibi Contacts sayfazmıızıda hazırlıyoruz. Aşağıdaki ekranda da Gadget’imizin kullanımını görüyoruz.
Bir makalemizin daha sonuna geldik.
Gadget’imizi aşağıdaki adresten indirebilirsiniz :
MSCRM Gadget
Başka bir makalemde tekrar görüşmek dileğiyle... Volkan KORKMAZ Microsoft Certified Business Management Solutions Specialist volkankorkmaz@gmail.com http://www.volkankorkmaz.net