كيف أعمل تنبيه على ملحوظة الاجتماع قبل ساعتين من موعد الاجتماع؟

Viewed 18

عندي ملحوظات اجتماع (MeetingRemark) ومحتاج تنبيه يطلع تلقائي لكل اجتماع تاريخه النهارده، وقبل الوقت المحدد له بساعتين، يقول إن متبقي أقل من ساعتين على الاجتماع ويعرض اسم الاجتماع، ويوصل للأشخاص المرتبطين بيه.

إيه أبسط طريقة أعمل كده باستخدام تعريف تنبيه (Notification Definition) ومهمة مجدولة (Task Schedule)، وإزاي أربط بينهم بحيث يشتغل التنبيه بشكل يدوي بناءً على استعلام SQL يجيب الاجتماعات اللي تنطبق عليها الشروط؟

1 Answers

اعمل الخطوات دي:

1) عرّف تنبيه (Notification Definition) على ملحوظة الاجتماع

  • اعمل تعريف تنبيه جديد واربطه بكيان MeetingRemark.
  • حط القوالب (Templates) والمستهدفين (Targets) بالطريقة العادية.
  • أول لما تحفظ التعريف، روح عدّل ملحوظة اجتماع موجودة بالفعل وتأكد إن التنبيه اتبعت بشكل صحيح من خلال السلوك العادي للتعديل.

2) اعمل مهمة مجدولة (Task Schedule) بنوع إجراء (Action)

  • نوع المهمة: Action
  • اسم العنصر: EARunManualNotificationFromQuery
  • التوثيق الخاص بالعنصر ده: https://docs.namasoft.com/entity-flows/core/EARunManualNotificationFromQuery.html
  • في مدخل الاستعلام (parameter1) حط استعلام يرجّع الاجتماعات اللي تاريخها النهارده ومتبقي عليها أقل من ساعتين، مثلاً:
select entityType, id
from MeetingRemark
where remarkDateOrWhateverColumn > xxx

(الاستعلام محتاج تعديل حسب أسماء الأعمدة الفعلية اللي بتمثل تاريخ ووقت الاجتماع عندك.)

3) ارجع على تعريف التنبيه واضبط الإعدادات للتشغيل اليدوي

  • شيل خيار الإرسال التلقائي مع التعديل.
  • علّم على خيار يدوي (useManually) — كده التنبيه مش هيتبعت لما المستخدم يعدّل الملحوظة، وبس هيتبعت لما المهمة المجدولة تشغّله على السجلات اللي بيرجّعها الاستعلام.

JSON جاهز للاستيراد المباشر

ده مثال JSON بيعمّلك تعريف التنبيه + المهمة المجدولة اللي بتشغّله كل 5 دقايق. الاستعلام محتاج تعديل حسب نموذج البيانات عندك:

{
    "NotificationDefinition": [
        {
            "code": "meetings-notify",
            "notificationEntity": "MeetingRemark",
            "priority": 1,
            "useManually": true,
            "templates": {
                "notificationTemplate": "لديك اجتماع بعد أقل من ساعتين {link($this)}\n{remarks}"
            },
            "targets": [
                {
                    "field": "relatedEntity1"
                },
                {
                    "field": "firstAuthor"
                }
            ]
        }
    ],
    "TaskSchedule": [
        {
            "code": "meetings-notify-task",
            "scheduleType": "Action",
            "relatedTo": "MeetingRemark",
            "usingCron": true,
            "scheduleInfo": {
                "timeMinute": "*/5",
                "timeHour": "*",
                "timeDayOfMonth": "*",
                "timeMonth": "*",
                "timeDayOfWeek": "*"
            },
            "className": "com.namasoft.infor.domainbase.util.actions.EARunManualNotificationFromQuery",
            "parameter1": "select top 1 entityType,id\nfrom MeetingRemark",
            "parameter7": "MEETING_NOTIFY"
        }
    ]
}