אודות תוספי פעולות על נתונים ומסגרת העבודה של פעולות על נתונים

תוספי פעולות על נתונים ממנפים את מערכת הפעולות על נתונים כדי לספק פעולות מותאמות אישית ומונחות נתונים המשולבות באופן מלא בממשק המשתמש של Oracle Analytics.

כאשר משתמש מפעיל פעולה על נתונים, מנהל הפעולות על נתונים מעביר את הקשר הבקשה (למשל QDR (qualified data reference), ערכי מדידות, מסננים ומטאדטה) לתוסף הפעולות על נתונים שאחראי לטיפול בבקשה. Oracle מספקת ארבעה סוגים של תוספי פעולות על נתונים: CanvasDataAction, URLNavigationDataAction, HTTPAPIDataAction ו-EventDataAction. אתה יכול להרחיב סוגים אלה של תוספי פעולות על נתונים עם מחלקות הבסיס abstract שלהם כדי לספק פעולות על נתונים משלך.

קטגוריות פעולה על נתונים

קטגוריות הפעולות על נתונים הן: נווט לכתובת URL, HTTP API, נווט ליריעה, ופעולות אירוע:

  • נווט לכתובת URL: פותחת את ה-URL שצוין בכרטיסיית דפדפן חדשה.
  • HTTP API: משתמשת בפקודות GET/POST/PUT/DELETE/TRACE כדי לייעד HTTP API ולא יוצרת כרטיסייה חדשה. במקום זאת נבחן קוד סטטוס ה-HTTP ומוצגת הודעה זמנית על הצלחה או כישלון.
  • נווט ליריעה: מאפשרת למשתמש לנווט מיריעת מקור ליריעת יעד באותה ההמחשה הגרפית או בין המחשות שונות. כל מסנן המוחל ביריעת המקור מועבר ליריעת היעד כמסנן חיצוני. כשיריעת היעד נפתחת, היא מנסה להחיל את המסננים החיצוניים על המחשה הגרפית. המנגנון שבאמצעותו המסננים החיצוניים מוחלים אינו מתואר כאן.
  • פעולות אירוע: מפרסמת אירוע באמצעות נתב האירועים של Oracle Analytics. כל קוד JavaScript (לדוגמה, תוסף של צד שלישי) יכול להירשם כמנוי לאירועים אלה ולטפל בתגובה שלהם המותאמת אישית בהתאמה. זה מספק את הגמישות המרבית כיוון שמפתח התוסף יכול לבחור כיצד תגיב הפעולה על הנתונים. לדוגמה, הוא יכול לבחור להציג ממשק משתמש או להעביר נתונים למספר שירותים בו זמנית.

שני סוגי הקטגוריות של פעולה על נתונים, נווט לכתובת URL ו-HTTP API, יכולים להשתמש בתחביר אסימונים כדי להזריק נתונים או מטאדטה מההמחשה אל הפרמטר URL ואל הפרמטר POST.

החלפת אסימון URL

פעולות על נתוני HTTP יכולות להחליף אסימונים בכתובת URL עם ערכים מההקשר שהועבר אל הפעולה על הנתונים. לדוגמה, ערכי qualified data reference (QDR), ערכי מסנן, שם משתמש, נתיב חוברת עבודה ושם יריעה.

אסימון הערות החלף ב- דוגמה תוצאה
${valuesForColumn:COLUMN} בלתי ישים ערכי תצוגת עמודה מה-qualified data reference. ${valuesForColumn: "Sales"."Products"."Brand"} BizTech,FunPod
${valuesForColumn:COLUMN, separator:"/"} כל אסימון שניתן באופן פוטנציאלי להחליף במספר ערכים תומך באפשרות המפריד האופציונלי. ברירת המחדל של separator היא פסיק (,) אך תוכל להגדיר אותה לכל מחרוזת. תוכל להשתמש במירכאות כפולות כ-escape בתוך מחרוזת זו על-ידי שימוש בלוכסן הפוך (\). ערכי תצוגת עמודה מה-qualified data reference. ${valuesForColumn: "Sales"."Products"."Brand"} BizTech,FunPod
${valuesForColumn:COLUMN, separationStyle:individual} ברירת המחדל של כל separationStyle היא delimited אך תוכל להגדיר אותה individual אם המשתמש צריך להפיק פרמטרים נפרדים של כתובת URL לכל ערך. ערכי תצוגת עמודה מה-qualified data reference. &myParam=${valuesForColumn: "Sales"."Products"."Brand"} &myParam=BizTech&myParam=FunPod
${keyValuesForColumn:COLUMN} בלתי ישים ערכי מפתח עמודה מה-qualified data reference. ${keyValuesForColumn:COLUMN} 10001,10002
${env:ENV_VAR} משתני סביבה נתמכים הם: sProjectPath, sProjectName, sCanvasName, sUserID, ו-sUserName. משתנה סביבה ${env:'sUserID'} myUserName

הקשר של פעולה על נתונים

תוכל להגדיר הקשר שמועבר כאשר משתמש מתחיל פעולה על נתונים.

תוכל להגדיר כמה מתוך ההקשר להעביר לפעולה על הנתונים כאשר תיצור את הפעולה.

Qualified Data Reference

כאשר מתחילה הפעולה על הנתונים, מופקת qualified data reference לכל נקודת נתונים שסומנה באמצעות מערך של אובייקטי LogicalFilterTree. LogicalFilterTree מורכב ממספר אובייקטים של LogicalFilterNode המסודרים במבנה של עץ. אובייקט זה כולל את:

  • התכונות בקצוות של שורה או עמודה של מתווה הנתונים.
  • המדד הספציפי בקצה המדד שמתייחס לכל תא מסומן.
  • ערך המדד הספציפי של כל תא מסומן.
  • ערכי מפתח וערכי תצוגה.

משתני סביבה

בנוסף לנתונים ומטאדטה שמתארים כל נקודת נתונים מסומנת, ייתכן שלפעולות מסוימות על נתונים יידרש הקשר נוסף שמתאר את הסביבה שממנה הותחלה הפעולה על הנתונים. משתני סביבה סביבה כאלו כוללים:

  • נתיב פרויקט
  • שם פרויקט
  • שם יריעה
  • מזהה משתמש
  • שם משתמש

עיצוב של קוד פעולה על נתונים

תוכל ליצור פעולות על נתונים באמצעות מחלקות API.

  • ישנן ארבע מחלקות קונקרטיות שמתקבלות בירושה מהמחלקה AbstractDataAction:
    • CanvasDataAction
    • URLNavigationDataAction
    • HTTPAPIDataAction
    • EventDataAction
  • תוכל ליצור סוגים חדשים של פעולות נתונים באמצעות API של תוסף הפעולות על נתונים.
  • מרשם סוגי הפעולה על נתונים מטופל באמצעות AbstractDataAction.
  • קוד שיוצר, קורא, עורך, מוחק או מפעיל מופעים של פעולות על נתונים, עושה זאת על-ידי פרסום אירועים.
  • אירועים מטופלים באמצעות DataActionManager.

מחלקות מודל פעולה על נתונים

קיימים מספר סוגים שונים של מחלקות מודל פעולה על נתונים.

AbstractDataAction

מחלקה זו אחראית על:

  • אחסון מודל הנוקאאוט (מותר לתת-מחלקות להרחיב זאת עם מאפיינים משל עצמן).
  • הגדרת שיטות ה-abstract שתת-מחלקות חייבות לממש:
    • + invoke(oActionContext: ActionContext, oDataActionContext:DataActionContext) <<abstract>>

      מתחיל את הפעולה על הנתונים באמצעות ההקשר שהועבר - יש לקרוא לו באמצעות DataActionManager בלבד.

    • + getGadgetInfos(oReport): AbstractGadgetInfo[] <<abstract>>

      בונה ומחזיר את ה-GadgetInfos שאחראי על הצגת השדות של ממשק המשתמש לעריכת סוג זה של פעולה על נתונים.

    • + validate() : DataActionError

      בודק את תקינות הפעולה על הנתונים ומחזיר ערך null אם היא תקפה או DataActionError אם אינה תקפה.

  • הספקת ברירת המחדל של המימוש לשיטות הבאות המשמשות להצגת חלקים כלליים של שדות ממשק המשתמש בפעולות על הנתונים:
    • + getSettings():JSON

      הופכת את מודל הנוקאאוט של הפעולה על הנתונים ל-JSON סדרתי המוכן להכללה בדוח (משתמש ב-komapping.toJS(_koModel)).

    • + createNameGadgetInfo(oReport) : AbstractGadgetInfo

      בונה ומחזירה את ה-GadgetInfo שיכול להציג את השדה שם של הפעולה על הנתונים.

    • + createAnchorToGadgetInfo(oReport) : AbstractGadgetInfo

      בונה ומחזירה את ה-GadgetInfo שיכול להציג את השדה עוגן ל- של הפעולה על הנתונים.

    • + createPassValuesGadgetInfo(oReport) : AbstractGadgetInfo

      בונה ומחזירה את ה-GadgetInfo שיכול להציג את השדה העבר ערכים של הפעולה על הנתונים.

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

CanvasDataAction, URLNavigationDataAction, HTTPAPIDataAction, EventDataAction

אלו המחלקות הקונקרטיות לסוגים הבסיסיים של פעולות על נתונים. מחלקות אלו פועלות בעצמן כדי לספק את ממשק המשתמש הכללי לסוגים אלו של פעולות על נתונים. הן יכולות לפעול גם כמחלקות בסיס שנוח להרחיב עמן תוספי פעולות על נתונים בהתאמה אישית.

  • CanvasDataAction: משמשת לניווט ליריעה.
  • URLNavigationDataAction: משמשת לפתיחת דף אינטרנט בחלון דפדפן חדש.
  • HTTPAPIDataAction: משמשת לביצוע בקשת GET/POST/PUT/DELETE/TRACE אל HTTP API ולטיפול ב-HTTP Response באופן שיטתי.
  • EventDataAction: משמשת לפרסום אירועי JavaScript באמצעות נתב האירועים.

כל מחלקה אחראית על:

  • מימוש שיטות ה-abstract ממחלקת הבסיס.
    • invoke(oActionContext: ActionContext, oDataActionContext:DataActionContext)

      שיטה זו אמורה להתחיל את הפעולה על הנתונים על-ידי שילוב המאפיינים שהוגדרו במודל הנוקאאוט עם אובייקט DataActionContext שצוין.

    • getGadgetInfos(oReport): AbstractGadgetInfo[]

      שיטה זו אמורה:

      • ליצור מערך כלשהו שמכיל את AbstractGadgetInfos.
      • לקרוא לשיטות createXXXGadgetInfo() פרטניות שדוחפות כל AbstractGadgetInfo למערך.
      • להחזיר את המערך.
  • הספקת השיטות הנוספות ליצירת האביזרים המיוחדים הספציפיים לתת-מחלקה מסוימת של פעולה על נתונים.

ייתכן שתת-מחלקות של המחלקות הללו לא יצטרכו להשתמש בכל האביזרים שסיפקו מחלקות-העל שלהן בממשקי המשתמש המותאמים אישית. על-ידי הפרדת הבנייה של כל אביזר באופן זה, מותר לתת-מחלקות לבחור את האביזרים הדרושים להן.

DataActionKOModel, ValuePassingMode

המחלקה DataActionKOModel מספקת את מודל הנוקאאוט הבסיסי המשותף לתת-המחלקות השונות של AbstractDataAction. ראה המחלקה DataActionKOModel.

מחלקות שירות פעולה על נתונים

קיימות מספר מחלקות שירות שונות של פעולות על נתונים.

DataActionManager

כל התקשורת עם DataActionManager משתמשת ב-ClientEvents.DataActionManager שמממש מטפלים באירועים לצורך:

  • ניהול הסל של פעולות על נתונים המוגדרות בחוברת העבודה הנוכחית.
  • הפעלת פעולה על נתונים.
  • אחזור כל הפעולות על נתונים המוגדרות בחוברת העבודה הנוכחית.
  • אחזור כל הפעולות על נתונים הישימות לנקודות הנתונים המסומנות כרגע.

DataActionContext, EnvironmentContext

כאשר פעולה על נתונים מופעלת, המחלקה DataActionContext מכילה את ההקשר המועבר ליעד.

  • getColumnValueMap()

    מחזיר מפה של ערכי עמודות תכונות ממופתחים לפי שמות עמודות התכונות. אלה מגדירים את ה-QDR (qualified data reference) לנקודות הנתונים מהן מופעלת הפעולה על נתונים.

  • getLogicalFilterTrees()

    מחזיר אובייקט LogicalFilterTrees המתאר את ה-QDR (qualified data references) בשביל נקודות הנתונים הספציפיות מהן מופעלת הפעולה על נתונים (לפרטים ראה את InteractionService).

  • getEnvironmentContext()

    מופע של המחלקה EnvironmentContext המתאר את סביבת המקור כגון:

    • getProjectPath()
    • getCanvasName()
    • getUserID()
    • getUserName()
  • getReport()

    מחזיר את הדוח ממנו הופעלה הפעולה על נתונים.

DataActionHandler

המחלקה DataActionHandler רושמת את תוספי הפעולות על נתונים השונים. ה-API שלה עקבי באופן כללי עם המזהים הייחודיים האחרים של תוספים (לדוגמה, VisualizationHandler).

המחלקה DataActionHandler מספקת את השיטות הציבוריות הבאות:

  • getClassName(sPluginType:String) : מחרוזת

    מחזיר את השם המלא של המחלקה של סוג הפעולה על נתונים המצוין.

  • getDisplayName(sPluginType:String) : מחרוזת

    מחזיר את שם התצוגה המתורגם של סוג הפעולה על נתונים המצוין.

  • getOrder(sPluginType:String) : מספר

    מחזיר מספר המשמש למיין רשימות של סוגי פעולות על נתונים בסדר המועדף.

המחלקה DataActionHandler מספקת את השיטות הסטטיות הבאות:

  • getDependencies(oPluginRegistry:Object) : אובייקט.<מחרוזת, מערך>

    מחזיר מפה של יחסי תלות המכסה את כל סוגי הפעולות על נתונים הרשומים.

  • getHandler(oPluginRegistry:Object, sExtensionPointName:String, oConfig:Object) : DataActionPluginHandler

    בונה ומחזיר מופע חדש של המחלקה DataActionHandler.

DataActionUpgradeHandler

המחלקה DataActionUpgradeHandler נקראת על-ידי UpgradeService כאשר דוח נפתח.

המחלקה DataActionHandler מספקת שתי שיטות עיקריות:

  • deferredNeedsUpgrade(sCurrentVersion, sUpgradeTopic, oDataActionJS, oActionContext) : Promise

    מחזיר Promise המפוענח לערך בוליאני המציין אם יש לשדרג (true) או לא (false) את הפעולה על נתונים המצוינת. השיטה מחליטה אם יש לשדרג את הפעולה על נתונים על-ידי השוואת מופע הפעולה על נתונים עם constructor הפעולה על נתונים.

  • performUpgrade(sCurrentVersion, sUpgradeTopic, oDataActionJS, oActionContext, oUpgradeContext) : Promise

    מבצע את שדרוג הפעולה על נתונים המצוינת ופותר את Promise. השדרוג עצמו מבוצע על-ידי קריאה לשיטה upgrade() על הפעולה על נתונים (רק תת-המחלקה הספציפית של הפעולה על נתונים המשודרגת מוסמכת לשדרג את עצמה).

  • getOrder(sPluginType:String) : מספר

    מחזיר מספר המשמש למיין רשימות של סוגי פעולות על נתונים בסדר המועדף.

אינטראקציות של קודי פעולה על נתונים

פעולה על נתונים מתקשרת עם קוד של Oracle Analytics כאשר היא יוצרת שדה ממשק משתמש וכאשר משתמש מפעיל פעולה על נתונים.

צור את השדה למופע חדש של פעולה על נתונים

אינטראקציה זו מתחילה כאשר Oracle Analytics רוצה להציג שדה ממשק משתמש של פעולה על נתונים. לשם כך, הוא:

  1. יוצר PanelGadgetInfo שפועל בתור ה-GadgetInfo אב של ה-GadgetInfos שהפעולה על נתונים מחזירה.
  2. קורא ל-getGadgetInfos() על הפעולה על נתונים.
  3. מוסיף את ה-GadgetInfos של הפעולה על נתונים כבנים של ה-PanelGadgetInfo שנוצר בשלב הראשון.
  4. יוצר את ה-PanelGadgetView שמציג את ה-PanelGadgetInfo.
  5. מגדיר את ה-HTMLElement שהוא האובייקט המכיל של ה-PanelGadgetView.
  6. רושם את ה-PanelGadgetView בתור HostedComponent בן של HostedComponent שכבר מצורף לעץ של HostedComponent.

    פעולות אלה מציגות את האביזרים של הפעולה על נתונים בתוך אביזר הלוח בסדר שבו הם מופיעים במערך המוחזר על-ידי getGadgetInfos().

הפעלת פעולה על נתונים

אינטראקציה זו מתחילה כאשר המשתמש מפעיל פעולה על נתונים דרך ממשק המשתמש של Oracle Analytics (למשל מתפריט ההקשר על נקודת נתונים בהמחשה גרפית).

בתגובה לאינטראקציה של המשתמש, הקוד:

  1. מפרסם אירוע INVOKE_DATA_ACTION המכיל את מזהה הפעולה על נתונים, ה-DataVisualization ממנה הופעלה פעולת הנתונים, ואובייקט TransientVizContext.
  2. DataActionManager מטפל באירוע זה על-ידי:
    1. קבלת מופע הפעולה על נתונים מהמזהה שלו.
    2. קבלת ה-LogicalFilterTrees של נקודות הנתונים המסומנות ב-DataVisualization המצוינת.
    3. בניית DataActionContext שמכיל את כל המידע שיש להעביר ליעד הפעולה על נתונים.
    4. קריאה ל-invoke(oDataActionContext) על הפעולה על נתונים.

קובץ plugin.xml לדוגמה פעולות על נתונים

נושא זה מציג קובץ plugin.xml לדוגמה לפעולה על נתוני CanvasDataAction.

plugin.xml לדוגמה

<?xml version="1.0" encoding="UTF-8"?>
<tns:obiplugin xmlns:tns="http://plugin.frameworks.tech.bi.oracle"
               xmlns:viz="http://plugin.frameworks.tech.bi.oracle/extension-points/visualization"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               id="obitech-currencyconversion"
               name="Oracle BI Currency Conversion"
               version="0.1.0.@qualifier@"
               optimizable="true"
               optimized="false">
 
 
   <tns:resources>
      <tns:resource id="currencyconversion" path="scripts/currencyconversion.js" type="script" optimizedGroup="base"/>
      <tns:resource-folder id="nls" path="resources/nls" optimizable="true">
         <tns:extensions>
            <tns:extension name="js" resource-type="script"/>
         </tns:extensions>
      </tns:resource-folder>
   </tns:resources>
 
 
   <tns:extensions>
      <tns:extension id="oracle.bi.tech.currencyconversiondataaction" point-id="oracle.bi.tech.plugin.dataaction" version="1.0.0">
         <tns:configuration>
         {
            "resourceBundle": "obitech-currencyconversion/nls/messages",
            "properties":
            {
               "className": "obitech-currencyconversion/currencyconversion.CurrencyConversionDataAction",
               "displayName": { "key" : "CURRENCY_CONVERSION", "default" : "Currency Conversion" },
               "order": 100
            }
         }
         </tns:configuration>
      </tns:extension>
   </tns:extensions>
 
 
</tns:obiplugin>

קבצים ותיקיות של תוסף פעולות על נתונים

הקבצים והתיקיות הבאים משמשים למימוש תוספי פעולות על נתונים.

bitech/client/plugins/src/
  • report
    • obitech-report
      • scripts
        • dataaction
          • dataaction.js
          • dataactiongadgets.js
          • dataactionpanel.js
          • dataactionupgradehandler.js
  • obitech-reportservice
    • scripts
      • dataaction
        • dataactionmanager.js
        • dataactionhandler.js