سجل أحداث سيرورة العمل
يسجل سجل أحداث سيرورة العمل أثرًا لكل حد دائم في سيرورة العمل. ويمكن أن يتضمن كل حدث في الأثر مدخلات الخطوة ومخرجاتها والحالة العامة قبل الخطوة وبعدها وسياق وقت التشغيل ومراجع الملفات المرفقة والأجزاء المتدفقة والتوقيت وتفاصيل الأخطاء.
البيانات المسجلة
| الحدث | التوقيت | البيانات الملتقطة |
|---|---|---|
step_started |
قبل تشغيل معالج الخطوة | معرّف المهمة، وقائمة الانتظار، والمحاولة، واسم الخطوة، ونوعها، والمدخلات، والحالة قبل التنفيذ |
step_completed |
بعد نجاح معالج الخطوة | المدخلات، والمخرجات، والحالة قبل التنفيذ، والحالة بعده، والسياق، والملفات المرفقة، والأجزاء، والمدة |
step_failed |
عند طرح معالج الخطوة استثناءً | المدخلات، والحالة قبل التنفيذ، والحالة بعده عند توفرها، والسياق، وفئة الخطأ، ورسالة الخطأ، والتتبّع، والمدة |
step_branch_completed |
عند نجاح أحد الفروع المتوازية | مدخلات الفرع، ومخرجاته، والحالة قبل التنفيذ، والحالة بعده، والسياق، والمدة |
step_item_completed |
عند نجاح أحد عناصر التكرار على كل عنصر | مدخلات العنصر، ومخرجاته، والحالة قبل التنفيذ، والحالة بعده، وبيانات العنصر الوصفية، والسياق، والمدة |
workflow_waiting |
عندما توقف خطوة انتظار التنفيذ مؤقتًا | نوع الانتظار، وأهدافه، ونمطه، ومفتاح النتيجة، وبيانات المطابقة الوصفية، والحالة أثناء الانتظار |
workflow_resumed |
عند استيفاء شرط خطوة الانتظار | حمولة الاستئناف، والحالة قبل الاستئناف، والحالة بعده |
workflow_replayed |
عند إعادة إنشاء عملية تصدير | بيانات سيرورة العمل المصدر الوصفية وحالة إعادة التشغيل |
الاستعلام عن الخط الزمني
$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";
}
}
يحتوي كل صف حدث على:
idworkflow_idjob_idparent_event_idstep_indexstep_namestep_typehandlereventqueueattemptinputoutputstate_beforestate_aftercontextartifactschunkserrorduration_mscreated_at
حزمة الأثر الموحّدة
استخدم workflow_trace() عند إنشاء أداة تصحيح أخطاء UI:
$trace = Queuety::workflow_trace( $workflow_id );
تتضمن حزمة الأثر ما يلي:
workflowstepseventsjobslogsartifactschunkssignalswait_dependencies
تجمع steps الأحداث حسب فهرس الخطوة، وتتضمن أحدث حدث مهم لكل خطوة.
البحث عن حالة الخطوة
$state = Queuety::workflow_state_at( $workflow_id, $step_index );
يعيد هذا الحالة العامة state_after من أحدث حدث مكتمل أو مستأنف لتلك الخطوة، أو null إذا لم تُسجل أي حالة.
بيانات تتبّع وقت التشغيل الوصفية
يمكن للمعالجات إضافة تفاصيل تتبّع على مستوى التطبيق أثناء عملها:
Queuety::trace_input( [ 'resolved' => $resolved_input ] );
Queuety::trace_context( [ 'ability' => 'content/load-post' ] );
Queuety::trace_output( [ 'post' => $post ] );
يمكن لمعالجات الخطوات أيضًا إرجاع بيانات تتبّع وصفية محجوزة:
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() لحذف أحداث الأثر القديمة:
$deleted = Queuety::workflow_events()->prune( 30 );