انتقل إلى المحتوى

سجل أحداث سيرورة العمل

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

البيانات المسجلة

الحدث التوقيت البيانات الملتقطة
step_started قبل تشغيل معالج الخطوة معرّف المهمة، وقائمة الانتظار، والمحاولة، واسم الخطوة، ونوعها، والمدخلات، والحالة قبل التنفيذ
step_completed بعد نجاح معالج الخطوة المدخلات، والمخرجات، والحالة قبل التنفيذ، والحالة بعده، والسياق، والملفات المرفقة، والأجزاء، والمدة
step_failed عند طرح معالج الخطوة استثناءً المدخلات، والحالة قبل التنفيذ، والحالة بعده عند توفرها، والسياق، وفئة الخطأ، ورسالة الخطأ، والتتبّع، والمدة
step_branch_completed عند نجاح أحد الفروع المتوازية مدخلات الفرع، ومخرجاته، والحالة قبل التنفيذ، والحالة بعده، والسياق، والمدة
step_item_completed عند نجاح أحد عناصر التكرار على كل عنصر مدخلات العنصر، ومخرجاته، والحالة قبل التنفيذ، والحالة بعده، وبيانات العنصر الوصفية، والسياق، والمدة
workflow_waiting عندما توقف خطوة انتظار التنفيذ مؤقتًا نوع الانتظار، وأهدافه، ونمطه، ومفتاح النتيجة، وبيانات المطابقة الوصفية، والحالة أثناء الانتظار
workflow_resumed عند استيفاء شرط خطوة الانتظار حمولة الاستئناف، والحالة قبل الاستئناف، والحالة بعده
workflow_replayed عند إعادة إنشاء عملية تصدير بيانات سيرورة العمل المصدر الوصفية وحالة إعادة التشغيل

الاستعلام عن الخط الزمني

PHP
$events = Queuety::workflow_timeline( $workflow_id );

foreach ( $events as $event ) {
    echo $event['step_index'] . ' ' . $event['event'] . ' ' . $event['handler'] . "\n";

    if ( 'step_completed' === $event['event'] ) {
        $input        = $event['input'];
        $output       = $event['output'];
        $state_before = $event['state_before'];
        $state_after  = $event['state_after'];
    }

    if ( 'step_failed' === $event['event'] ) {
        echo 'Error: ' . $event['error']['message'] . "\n";
    }
}

يحتوي كل صف حدث على:

  • id
  • workflow_id
  • job_id
  • parent_event_id
  • step_index
  • step_name
  • step_type
  • handler
  • event
  • queue
  • attempt
  • input
  • output
  • state_before
  • state_after
  • context
  • artifacts
  • chunks
  • error
  • duration_ms
  • created_at

حزمة الأثر الموحّدة

استخدم workflow_trace() عند إنشاء أداة تصحيح أخطاء UI:

PHP
$trace = Queuety::workflow_trace( $workflow_id );

تتضمن حزمة الأثر ما يلي:

  • workflow
  • steps
  • events
  • jobs
  • logs
  • artifacts
  • chunks
  • signals
  • wait_dependencies

تجمع steps الأحداث حسب فهرس الخطوة، وتتضمن أحدث حدث مهم لكل خطوة.

البحث عن حالة الخطوة

PHP
$state = Queuety::workflow_state_at( $workflow_id, $step_index );

يعيد هذا الحالة العامة state_after من أحدث حدث مكتمل أو مستأنف لتلك الخطوة، أو null إذا لم تُسجل أي حالة.

بيانات تتبّع وقت التشغيل الوصفية

يمكن للمعالجات إضافة تفاصيل تتبّع على مستوى التطبيق أثناء عملها:

PHP
Queuety::trace_input( [ 'resolved' => $resolved_input ] );
Queuety::trace_context( [ 'ability' => 'content/load-post' ] );
Queuety::trace_output( [ 'post' => $post ] );

يمكن لمعالجات الخطوات أيضًا إرجاع بيانات تتبّع وصفية محجوزة:

PHP
return [
    'result' => 'done',
    '_queuety_trace' => [
        'input' => [ 'resolved' => $resolved_input ],
        'context' => [ 'node_id' => 'loadPost' ],
        'artifacts' => [
            [ 'key' => 'brief', 'kind' => 'markdown' ],
        ],
    ],
];

يُخزن المفتاح _queuety_trace في سجل الأحداث ولا يُدمج في حالة سيرورة العمل.

CLI

اعرض الخط الزمني كجدول:

سطر الأوامر
wp queuety workflow timeline 42

اعرض الحالة بعد خطوة:

سطر الأوامر
wp queuety workflow state-at 42 0

الاحتفاظ

تتراكم سجلات الأحداث بمرور الوقت. استخدم prune() لحذف أحداث الأثر القديمة:

PHP
$deleted = Queuety::workflow_events()->prune( 30 );