اذهب إلى المحتوى
  • 0

تصميم جداول MySQL لعملية الموافقات في Workflow

إسلام بسيم أبو كيلة

السؤال

السلام عليكم ورحمه الله وبركاته 

سؤالي عن تصميم جداول mysql database لعمل workflow 

على سبيل المثال يقوم المستخدم باضافة post في قاعدة البيانات ويتم عمل موافقة من ال admin وبعد ذلك يتم عمل موافقة من superadmin 

هل يتم عمل جدول جديد للموافقات؟

 

وشكراً

تم التعديل في بواسطة Mustafa Suleiman
تعديل عنوان السؤال
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

باستطاعتك إنشاء جدول جديد في قاعدة بيانات MySQL لتتبع عملية الموافقات في سيناريو العمل الذي وصفته، يحمل معلومات الموافقات المتعلقة بكل منشور كالتالي:

CREATE TABLE approvals (
  id INT AUTO_INCREMENT PRIMARY KEY,
  post_id INT NOT NULL,
  approved_by VARCHAR(255) NOT NULL,
  approval_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  status ENUM('pending', 'approved', 'rejected') NOT NULL,
  FOREIGN KEY (post_id) REFERENCES posts(id)
);

وفي الكود، لدينا جدول بعنوان "approvals" يحتوي على الحقول التالية:

  1. id: معرف فريد لكل عملية موافقة.
  2. post_id: معرف المنشور المرتبط بهذه الموافقة.
  3. approved_by: اسم المستخدم الذي قام بالموافقة.
  4. approval_date: تاريخ ووقت الموافقة (القيمة الافتراضية هي التاريخ والوقت الحالي).
  5. status: حالة الموافقة، يمكن أن تكون إحدى القيم "pending" (قيد الانتظار)، "approved" (موافق)، أو "rejected" (مرفوض).

وعند  تنفيذ موافقة على المنشور، يتم إدخال سجل جديد في جدول الموافقات مع تعبئة حقول المعلومات المناسبة مثل المعرف المرتبط بالمنشور واسم الموافق والتاريخ وحالة الموافقة، وتستطيع أيضًا إضافة حقول إضافية إلى جدول الموافقات لتلبية متطلباتك الخاصة، مثل التعليقات أو الرسائل المرتبطة بكل موافقة.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

نعم، في حالة تصميم نظام workflow يتضمن موافقات من مستخدمين مختلفين مثل الـ admin والـ superadmin، فمن النمط الأكثر شيوعًا هو إنشاء جدول جديد لتخزين الموافقات.

يمكن أن يكون لديك جدول يحمل اسم مثل "Approvals" أو "Workflow" ويحتوي على الحقول التالية:

  • ApprovalID: يكون معرف فريد لكل موافقة.
  • PostID: يكون معرف الـ post المرتبط بالموافقة.
  • UserID: يكون معرف المستخدم الذي قام بالموافقة (مثل admin أو superadmin).
  • Status: يكون حقلًا لتخزين حالة الموافقة (مثل "Approved" أو "Rejected").
  • ApprovalDate: يكون تاريخ الموافقة.
  • Comments: يكون حقلًا اختياريًا لتسجيل أي تعليقات إضافية.

بهذا التصميم، يمكنك تسجيل الموافقات المختلفة لكل post وتتبع حالة الموافقة وتاريخها ومعلومات المستخدم الذي قام بالموافقة.

هذا مجرد مثال بسيط لتصميم جدول للموافقات. قد تحتاج إلى تعديله أو إضافة مزيد من الحقول وفقًا لمتطلبات النظام الخاص بك وتصميم قاعدة البيانات بشكل أوسع.

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

في بناء نظام workflow على قاعدة بيانات MySQL، يمكن إنشاء جدول جديد لتخزين الموافقات، وذلك لتتبع عملية الموافقة على الـ post التي أضافها المستخدم.

الجدول الجديد يمكن تصميمه ليحتوي على الحقول التالية:

  • معرف الموافقة: يتم توليد هذا المعرف تلقائيًا عند إنشاء الموافقة في الجدول ويستخدم لتحديد الموافقة بشكل فريد.
  • معرف البوست: يحتوي هذا الحقل على معرف البوست الذي أضافه المستخدم في جدول البوستات، مما يساعد في ربط الموافقة بالبوست.
  • مستوى الموافقة: يمكن تحديد مستوى الموافقة باستخدام هذا الحقل، ومن الممكن أن يكون هناك أكثر من مستوى للموافقة. على سبيل المثال، يمكن تعيين قيمة (1) للموافقة المقدمة من الـ admin وقيمة (2) للموافقة المقدمة من الـ superadmin.
  • حالة الموافقة: يمكن تحديد حالة الموافقة باستخدام هذا الحقل، حيث يمكن تعيين قيمة (0) للموافقة المعلقة وقيمة (1) للموافقة المقبولة وقيمة (2) للموافقة المرفوضة.
  • تاريخ الموافقة: يمكن تحديد تاريخ الموافقة باستخدام هذا الحقل.

باستخدام هذا الجدول، يمكن تتبع الموافقات وحالتها، وتحديد المستوى الذي تم تقديم الموافقة منه، وتحديد تاريخ الموافقة. وهذا يساعد على إدارة عمليات الـ workflow بشكل أفضل وتسهيل العملية بشكل كبير.

لنفترض أن لدينا تطبيقًا للمدونات، ويمكن للمستخدمين إضافة بوستات جديدة ويتم عرضها للمشاهدة بعد الموافقة عليها من قبل الـ admin والـ superadmin. يمكن تصميم جدول الموافقات بالشكل التالي:

CREATE TABLE approvals (
  id INT NOT NULL AUTO_INCREMENT,
  post_id INT NOT NULL,
  level INT NOT NULL,
  status INT NOT NULL,
  created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (id)
);

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

يمكنك بجانب المقترح أيضا اضافة حقل بولياني باسم is_approved يعبر عن ما ان كان المنشور موافقا على نشره أو لا. 

بحيث سيمكنك لاحقا التعديل على هاته القيمة فقط لنشره، أو جلب المنشورات التي قيمة is_approved فيها هي true فتكون هي المنشورات الموافق على نشرها.

CREATE TABLE posts (
  id INT NOT NULL AUTO_INCREMENT,
  post_title VARCHAR(255) NOT NULL, 
  is_approved BOOLEAN NOT NULL DEFAULT FALSE,
  updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (id)
);

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...