הערה
הגישה לדף זה מחייבת הרשאה. באפשרותך לנסות להיכנס או לשנות מדריכי כתובות.
הגישה לדף זה מחייבת הרשאה. באפשרותך לנסות לשנות מדריכי כתובות.
FetchXML אוניברסלי (UFX) היא שפת שאילתות מתקדמת שאפשר להשתמש בה לשאילתות נתונים באמצעות FetchXML דינמי. הוא מעצב ומכין את הנתונים המתקבלים לצריכה על ידי פתרון תזמון משאבים אוניברסלי (URS). שפת שאילתות זו מאפשרת לך ליצור שאילתות מותאמות אישית כדי להתאים אישית ולהרחיב את לוח הזמנים ואת מסנני מסייע לוחות הזמנים כדי לענות על הצרכים העסקיים הייחודיים של הארגון.
UFX מורכב משני רכיבים: שקית UFX ושאילתת UFX.
תיק UFX פשוט
שקית UFX מכילה נתונים מסווגים סטטית. בזיכרון, הוא מדגמן מילון עם מפתחות וערכים. אתה יכול לסדר את זה ל-JSON ו-XML. כאשר הנתונים מוקלטים, שאילתת UFX יכולה לשאול מהם נתונים, וממשק המשתמש של הלקוח יכול להיקשר אליו.
מסיבות מעשיות וביצועיות, שקית הזיכרון מיושמת מעל אובייקט SDK Entity של אפליקציות Dynamics 365.
תיק לדוגמה המכיל שני ערכים.
לזכר:
| מפתח | ערך | סוג נתונים |
|---|---|---|
| שם | שי | מחרוזת |
| גיל | 36 | ת.ת |
ב-JSON:
{
"name": "John",
"age": 36
}
ב-XML:
<bag>
<name ufx-type="string">John</name>
<age ufx-type="int">36</age>
</bag>
סוגים נתמכים של UFX
תיק UFX יכול להכיל ערכים מסוגים רבים. הם מחולקים לשלוש מחלקות:
| קטגוריה | ערך |
|---|---|
| סוגים פשוטים |
bool (Boolean), int (Int32), long (Int64), double (Double), decimal (Decimal)datetime (DateTime), guid (Guid),string (String)סוגים פשוטים ספציפיים של Dynamics 365: money (Money), option (OptionSet), lookup (EntityReference) |
| תיקים אחרים | bag (Entity) |
| רשימת תיקים | list (EntityCollection) |
הנה שקית JSON לדוגמה המכילה סוגים נוספים:
{
"citizen": true, // implicit bool
"age": 36, // explicit int
"age@ufx-type": "int",
"name": { // nested bag
"first": "John",
"last": "Doe"
},
"children": [ // list of bags
{ "name": "Sam" },
{ "name": "Judy" }
]
}
אותו תיק ב-XML:
<bag>
<citizen ufx-type="bool">true</citizen>
<age ufx-type="int">36</age>
<name ufx-type="bag">
<first ufx-type="string">John</first>
<last ufx-type="string">Doe</last>
</name>
<children ufx-type="list">
<bag>
<name ufx-type="string">Sam</name>
</bag>
<bag>
<name ufx-type="string">Judy</name>
</bag>
</children>
</bag>
שאילתות UFX
כתוב שאילתות UFX כשקיות UFX מבוססות XML. מאפיינים בתיק יכולים להכיל הוראות UFX לביצוע שאילתות על נתונים באופן דינאמי. שאילתת UFX מתבצעת באובייקטים בזיכרון, לא ב-XML. רק ההוראות כתובות ב-XML. אפשר לסדר את הפלט שלו ל-JSON או XML.
שאילתת UFX הבאה מגדירה את המאפיין accounts בתיק עם source הוראת UFX. כתוצאה מכך, Dynamics 365 מבצע את ה- FetchXML המוטבע, ומאכלס את accounts המאפיין ברשימה של תיקים. כאשר EntityCollection כל תיק מייצג רשומת תיק לקוח בודדת מ- Dynamics 365.
<bag xmlns:ufx="https://schemas.microsoft.com/dynamics/2017/universalfetchxml">
<accounts ufx:source="fetch">
<fetch top="10">
<entity name="account" />
</fetch>
</accounts>
</bag>
שאילתת UFX מעובדת ברצף ויכולה להכיל שאילתות FetchXML רבות.
הנה קטע מהתוצאה של שאילתת ה-UFX הקודמת בסדרה ל-XML. חלק מהערכים מכילים מטא-דאטה שמתארת אותם בפירוט.
<bag>
<accounts ufx-type="list">
<bag ufx-id="166e39dd-34a1-e611-8111-00155d652f01" ufx-logicalname="account">
<accountid ufx-type="guid">166e39dd-34a1-e611-8111-00155d652f01</accountid>
<accountnumber ufx-type="string">ABSS4G45</accountnumber>
<name ufx-type="string">Fourth Coffee (sample)</name>
<statecode ufx-type="option" ufx-formatvalue="Active">0</statecode>
<websiteurl ufx-type="string">https://www.fourthcoffee.com/</websiteurl>
<primarycontactid ufx-type="lookup" ufx-formatvalue="Yvonne McKay (sample)" ufx-logicalname="contact">7c6e39dd-34a1-e611-8111-00155d652f01</primarycontactid>
...
</bag>
<bag ufx-type="bag" ufx-id="186e39dd-34a1-e611-8111-00155d652f01" ufx-logicalname="account">
<accountid ufx-type="guid">186e39dd-34a1-e611-8111-00155d652f01</accountid>
<accountnumber ufx-type="string">ACTBBDC3</accountnumber>
<name ufx-type="string">Litware, Inc. (sample)</name>
<statecode ufx-type="option" ufx-formatvalue="Active">0</statecode>
<websiteurl ufx-type="string">https://www.litwareinc.com/</websiteurl>
<primarycontactid ufx-type="lookup" ufx-formatvalue="Susanna Stubberod (sample)" ufx-logicalname="contact">7e6e39dd-34a1-e611-8111-00155d652f01</primarycontactid>
...
</bag>
...
</accounts>
</bag>
הוראת UFX select מקבלת ביטוי XPath שבוחר ערכים מהתיק הנוכחי.
<bag xmlns:ufx="https://schemas.microsoft.com/dynamics/2017/universalfetchxml">
<accounts ufx:source="fetch">
<fetch top="10">
<entity name="account" />
</fetch>
</accounts>
<first_account_name ufx:select="accounts/bag[1]/name" />
<!-- null values remove properties from the bag -->
<accounts ufx:select="$null" />
</bag>
התיק המתקבל ב-XML:
<bag>
<first_account_name ufx-type="string">Fourth Coffee (sample)</first_acount_name>
</bag>
אין ספק שההיבט החזק ביותר של שאילתת UFX הוא היכולת שלה ליצור באופן דינמי FetchXML על סמך נתוני קלט.
בדוגמה הבאה, חפש חשבונות לפי ערך שסופק על ידי המשתמש וזמין כתיק UFX דרך משתנה XPath $input . שים לב להוראות ה-UFX ifו-value על האלמנט condition .
<bag xmlns:ufx="https://schemas.microsoft.com/dynamics/2017/universalfetchxml">
<accounts ufx:source="fetch">
<fetch top="10">
<entity name="account">
<filter>
<condition attribute="name" operator="like" ufx:if="$input/NameFilter">
<ufx:value select="$input/NameFilter" attribute="value" />
</condition>
</filter>
</entity>
</fetch>
</accounts>
</bag>
אם התכונה NameFilter בשקית הקלט כללה %city%, תנאי FetchXML שנוצר שבוצע על ידי Dynamics 365 היה נראה כך.
<condition attribute="name" operator="like" value="%city%" />
מפתחות, ערכים ומטה-נתונים
תיק UFX מכיל מפתחות וערכים, כאשר לערכים מסוימים יש יותר מטא-נתונים כדי לתאר אותם.
דוגמה יכולה להיות ערך מסוג lookup (EntityReference). כאשר מתבצעת שאילתה מ- Dynamics 365 דרך FetchXML, היא מחזירה את השם הלוגי של הישות ואת שם התצוגה המעוצב של הרשומה. שקית ה-UFX שומרת על המידע הנוסף הזה כמטא-דאטה שמצורף לערך הראשי.
בסדרה ל-JSON, a lookup עם מטא-נתונים נראה כך:
{
"primarycontactid": "7e6e39dd-34a1-e611-8111-00155d652f01",
"primarycontactid@ufx-type": "lookup",
"primarycontactid@ufx-logicalname": "contact",
"primarycontactid@ufx-formatvalue": "Susanna Stubberod (sample)"
}
ב-XML:
<primarycontactid ufx-type="lookup" ufx-formatvalue="Susanna Stubberod (sample)" ufx-logicalname="contact">7e6e39dd-34a1-e611-8111-00155d652f01</primarycontactid>
XPath על נתוני Dynamics 365
כשאתה מקליד נתונים בתיק UFX, שאילתת UFX יכולה לראות אותם בפורמט מובנה ולהשתמש ב-XPath כדי לעבור על הנתונים ולבחור ערכים.
ביטוי XPath שצוין בהנחיית UFX רואה את הנתונים בתיק בדומה למבנה התיק בצורה סידורית XML. עם זאת, הנתונים מאוחסנים באובייקטי .NET בזיכרון (במופעים של Entity וסוגים EntityCollection ) ולא במסמכי XML.
הפניה לסוג UFX
כל סוגי ה-UFX תומכים ב-ו-metadata ufx-typeufx-formatvalue . הטבלה הבאה מתארת מטא-דאטה נוספים לכל סוג.
| שם UFX | קוד סוג תכונה | שם .NET | מטא נתונים של UFX |
|---|---|---|---|
| בול | בוליאני | בוליאני | |
| ת.ת | מספר שלם | אינט 32 | |
| ארוך | ביגנט | אינט 64 | |
| כפול | כפול | כפול | |
| עשרוני | עשרוני | עשרוני | |
| תאריך ושעה | תאריך ושעה | תאריך ושעה | |
| GUID | מזהה ייחודי | GUID | |
| מחרוזת | תזכיר | מחרוזת | |
| כסף | כסף | כסף | |
| אפשרות | רשימת בחירה | OptionSetValue | |
| בדיקת מידע | בדיקת מידע | EntityReference | ufx-logicalname |
| תיק | לא ישים | ישות | ufx-idufx-logicalname |
| רשימה | לא ישים | EntityCollection | |
| לא ישים | לא ישים | כינוי ערך | ufx-aliasentityufx-aliasattribute |
הוראות שאילתות UFX
השתמש בהוראות UFX על מאפייני bag ועל אלמנטים XML בשאילתת FetchXML.
הנחיות שקיות UFX
| תכונה | ערך | תיאור |
|---|---|---|
ufx:if |
XPath | בדיקת ביטוי XPath ועיבוד המאפיין רק אם הבדיקה מחזירה true |
ufx:source |
fetch |
מפעיל את רכיב ה- XML המוטבע <fetch> ומקצה את התוצאה למאפיין |
ufx:select |
XPath | ביצוע ביטוי XPath והקצאת התוצאה למאפיין בעת שאילתור עבור או baglist, ניתן לציין ילד bag אופציונלי בצורת XML כדי להמיר את תוצאת הביטוי XPath |
הוראות UFX FetchXML
| אלמנט | תכונה | ערך | תיאור |
|---|---|---|---|
| כל האלמנטים | ufx:if |
XPath | בודק את הביטוי XPath ופולט את אלמנט ה-XML רק אם הבדיקה מצליחה |
ufx:apply |
select |
XPath | לולאה מעל ערכת הצומת המוחזרת על-ידי ביטוי XPath ומוציאה את רכיבי ה-XML הצאצאים פעם אחת עבור כל צומת |
ufx:value |
select |
XPath | מבצע את ביטוי XPath ומוציא את התוצאה ברכיב XML הנוכחי |
ufx:value |
attribute |
שם תכונה | הקצאת תוצאת ביטוי XPath לשם התכונה שצוינה ברכיב ה- XML הנוכחי |
פונקציות UFX XPath
UFX מוסיף פונקציות חדשות רבות בנוסף לאלו הזמינות באופן מקורי ב-XPath.
datetime()
-
datetime(): מחזיר את השעה הנוכחית ב-UTC.
רשימה ()
-
list(bag | list, ...[bag | list]): לוקחת מספר שלbagערכי Orlistכקלט ומשטחת אותם ליחידlist.
lookup-to-list()
-
lookup-to-list(lookup, ...[lookup]): לוקח מספרlookupערכים, ממיר כל ערך ל-abagעםufx-idמערך ו-מטא-דאטהufx-logicalname, ומשטח אותם לערך אחדlist.
option-to-list()
-
option-to-list(option, ...[option]): מקבל מספרoptionערכים, ממיר כל ערך ל-abagעם תכונה אחתoption, ומשטח אותם לערך יחידlist.
סדר()
-
order(list, string, bool): מסדר רשימה לפי תכונה בכלbag. ציין את התכונה בארגומנט השני, וציין סדר יורד בארגומנט השלישי. -
order(list, list): מסדר רשימה לפי מספר סדרי מיון המוגדרים כרשימה בארגומנט השני. לכלbagאחד ברשימה השנייה יכול להיות תכונה וnamedescending-.
iif()
-
iif(any, any, any): אם הטיעון הראשון נכון, מחזיר את הארגומנט השני. אחרת, מחזיר את הטיעון השלישי.
משתני UFX XPath
| שם | תיאור |
|---|---|
| $input | A bag זמין לשאילתת UFX עם ערכי קלט |
| $null | קבוע אפס. בחירה $null בנכס מסירה את הנכס מה- bag |
| $current | התייחסות לנוכח bag ששאילתת ה-UFX מעבדת |
משאבים נוספים
הבנה והתאמה אישית של התאמת משאבים ב- Universal Resource Scheduling