DCSIMG
עמוד הבית| חבילות השירות שלנו| חומר חופשי| צור קשר
Dynamics CRM 4.0 with Silverlight as a UI Scripter - בלוג היועצים של מיקרוסופט ישראל

בלוג היועצים של מיקרוסופט ישראל

Dynamics CRM 4.0 with Silverlight as a UI Scripter

ניסיון קטן שביצעתי לאחרונה מצא חן בעיני ורציתי לחלוק אותו.

לכאורה שני טכנולוגיות שונות שנראה כי יש אפשרות לשלב ביניהם, האחת הינה Dynamics CRM 4.0 והשנייה Silverlight.

הרי ב- CRM יש אפשרות לשלב אלמנטים בדף כ- IFrames , אז מדוע לא נשלב דף Silverlight המארח Dashboard מגניב בעל גרפיקה ו- Control ים מגניבים ?

אז... כבר ביצעו זאת ויש אין ספור דוגמאות ברשת, אולי בעתיד נפנה לכמה מהן, אך זה לא נושא ה- Post.

היום ברצוני להראות כיצד ניתן להשתמש במנוע ה- Interoperability בין עולם ה- DOM וה- JavaScript לעולם ה- Silverlight , בו אנו כותבים Managed Code ונהנים מיכולות שונות כמו: קריאה לשירותי WCF בצורה קלה ומוכרת ואף מנועי ריצה שונים כגון: Garbage Collection ועוד. מה גם שבצורה הזו נוכל לכתוב את לוגיקת ה- Client Side עם Intelligence מלא וניצול החיבור בין Visual Studio ל- ALM לעבודה בגרסאות, צוותי פיתוח, Build ים ועוד.

ולשם שינוי, אנו נבצע את הדוגמא בצורה שהינה Supported לחלוטין.

ישנם דוגמאות ורעיונות בהן נוגעים בקובץ ה- Global.js ומחברים לכל האפליקציה את ה- Silverlight Control המצביע ל- XAP אחד המכיל לוגיקה. כאמור זה אינו נתמך ולא נדון באפשרות הזו כאן.

השיטה:

· ניצור דף Html פשוט המכיל אובייקט Silverlight המפנה לאפליקציית Silverlight בעלת מתודה המסומנת כ- Scriptable Member

· נבצע Customization לאחת הישויות, לדוגמא Contact

· נוסיף IFrame המפנה לאפליקציית ה- Silverlight

· ונוסיף קוד באחת ממתודות ה- OnChange שנבחר ובה נקרא לפונקציית ה- Silverlight שחשפנו.

לצורך הדוגמא כל שאנו צריכים זה לפתוח Visual Studio לייצר אפליקציית Silverlight הכוללת אפליקציית Web כ- Host.

clip_image001

 

 

 

 

 

 

 

נכריז על MainPage כ- [ScriptableType] ב- Loaded event נרשום את ה- Control כ- ScriptableObject מה שיאפשר לנו להגיע אליו מדף ה- Html. ונחשוף את אחת הפונקציות כ- [ScriptableMember]

לדוגמא:

namespace CRMSilverlight

{

[ScriptableType]

public partial class MainPage : UserControl

{

public MainPage()

{

InitializeComponent();

this.Loaded += new RoutedEventHandler(MainPage_Loaded);

}

void MainPage_Loaded(object sender, RoutedEventArgs e)

{

HtmlPage.RegisterScriptableObject("CRM_SL", this);

}

[ScriptableMember]

public string GetDescription()

{

return "This is my Silverlight Description";

}

}

}

כמו כן בדף ה- Html ניתן ID, ל- Silverlight object לצורך נוחות.

לדוגמא:

<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%" id="SilverlightControl">

נפרוס את האפליקציה תחת ספריית ה- ISV של CRM , כך:

clip_image002

 

 

ב- CRM נבצע Customization ל- Contact, נוסיף IFrame לדף ה- Html שיצרנו.

clip_image003

 

 

 

ונחבר ל- OnChange של אחד השדות את הקוד הבא:

clip_image004

 

 

 

 

 

 

והתוצאה הינה בשינוי שדה, קבלת ערך מתוך אפליקציית ה- Silverlight

clip_image006

 

 

 

 

 

 

טריק נוסף הוא להוסיף את השורה הבאה ב- Form OnLoad בכדי להסתיר את ה- IFrame

crmForm.all.IFRAME_SL.parentElement.parentElement.style.height = '0px';

וזהו, הראתי דוגמא קטנה לחיבור בין Dynamics CRM ל- Silverlight, וכעת אתם יכולים להשתמש בדמיון לשימושים השונים.

כמה רעיונות: ביצוע validations , תלות בין שדות, קריאה לשירותי WCF ועוד עוד.

תוכן התגובה

Alex Golesh כתב/ה:

Well done!!!! Like it:)

# June 30, 2010 3:28 PM
שלח תגובה

(שדה חובה)  

(שדה חובה)  

(אופציונלי)

(שדה חובה) 

Please add 7 and 7 and type the answer here:


Enter the numbers above: