מרכז אירועים כללי למערכת מודולרית מרובת מוקדים
-
שלום לכולם
יש לנו הרבה מערכות שעובדות בצורה מודולרית עם תקשורת כלשהי ביניהם למשל:
דטה בייס
תוכנת CRM
מרכזייה
קליטת פקסים
שליחת פקסים
שליחת מיילים
קבלת מיילים
SMS
סריקת מסמכים
ועוד דברים שאין אפשרות לפרט כאן
ועוד היד נטויההבעיה שאני מתמודד איתה כיום, היא התקשורת בין המערכות ודיווח והרשמה לאירועים.
בעולם התוכנה יש מונח שנקרא "האזנה" לאירוע או לפורט וכדומה, מבחינת מדעי המחשב או האלקטרוניקה זה אומר לולאה שמתבצעת ברמת החומרה או התוכנה אולם עובדת באיזה שהוא טריד בעדינות ושלא לגזול משאבים רבים מידי.
לצורך התיאוריה כאן אני רוצה להטביע 2 מונחים "צעקה" ו"הסתכלות".
לפי מודל הצעקות, כל מערכת שרוצה לדווח למערכת אחרת על אירוע היא בעצם צועקת לה משהו באוזן, תחשבו על מרכזיה שצריכה לעדכן את דטה בייס על שיחה נכנסת, וגם לפתוח חלונית עם פרטי הלקוח, וגם לעשות נוטיפיקציה למסך מנהל שמתבצעת כעת עוד שיחה נכנסת. אז נכון, אם אנחנו עובדים עם תוכנה ענקית שכולה כתובה ב WPF אפשר לכתוב את זה בקוד נעים יחסית, (גם אז זה לא יעזור כי כל פקיד פותח מופע חדש של האפליקציה). הבעיה היא שאנחנו עובדים עם מערכות שונות לגמרי, מרכזיית אסטריסק בשרת לינוקס בכלל, דטה בייס של SQL SERVER בשרת אחר לגמרי, תוכנות קטנות שעושות עבודות שונות כמו נמלים, סורק ששולח קבצים לאיזו כתובת, וכן הלאה.
הצורה שזה נראה היום, זה שכל מערכת, לדוגמא: מרכזייה, כשיש שיחה נכנסת רק היא יודעת על האירוע, ואני צריך "לצעוק" לתוך הדטה בייס את המידע, וכן לדווח לתוכנה בדרך לא דרך וכן הלאה בכדי "לעורר" את כל הגורמים הקשורים בעניין. מה שאומר שבכל מערכת אני צריך לכתוב קוד מיוחד שירשת אותו עם מערכות אחרות, ואז נהיה סוג של קורי עכביש קשים לתחזוקה, ופגיעים מאוד לבעיות של לולאה אינסופית וכדומה צריך לחשוב על כל האפשרויות והמקרים ומה משפיע על מה.המודל השני הוא מודל ההסתכלות, מה שאומר שהמערכת עובדת בצורה שקטה, וכל מערכת יודעת "להסתכל" על הפעילות של מערכת אחרת, בלי שהמערכת השניה תצטרך לדווח לה באמצעות צעקה, בצורה כזאת, הקוד לא צריך כולו להיכתב במערכת הגורמת, אלא רובו ייכתב במערכת הנגרמת (שזה יותר ראוי מבחינת ארכיטקטורה כי "האינטרס" של הצפת חלון עם פרטי המתקשר איננו עניינה של המרכזייה שתפקידה לנתב ולנהל שיחות - זהו עניינה של תוכנת ה CRM שהלקוח יוצג בפני הפקיד כאשר ישנה שיחה נכנסת ועיין כאן). אז איך ממשים את זה??? חשבתי לעשות מרכז אירועים (וכנסים) אדיר ונורא, שכל מה שאני צריך כאשר מתרחש אירוע (למשל שיחה נכנסת) זה לרשום את האירוע הזה עם מספר פרמטרים לאותו מרכז אירועים (בלי לרשום רישום יזום נראה לי רחוק להגיע למערכת שיודעת להירשם לכל סוגי המערכות וכו'), וכל המערכות האחרות אשר אני מעוניין שתהיינה מושפעות מאירוע כזה בדרך זו או אחרת, בסך הכל יסתכלו על אותו מרכז ויקבלו את המידע הנדרש. זה אמור להיות חיסכון גדול ועצום בתחזוקת קוד, בנקיותו, וגם מן הסתכם בכתיבתו.
הבנתי גם ממורינו הרב Mat בעמחה"פ (=בעל מחבר הפרוייקט) נטפרי, שהוא צריך מערכת דומה עבור ניהול המיזם שלו. אז אשמח לשמוע כאן רעיונות/ידע של אנשים. וגם איך לעשות דברים בלי לגזול משאבים יקרים.
בתודה מראש.
פורסם במקור בפורום CODE613 ב13/01/2015 17:32 (+02:00)