استخدام الأتمتة والبرمجة النصية مع ArcGIS Workforce

تنبيه:

يُعد ذلك موضوعًا متقدمًا مخصصًا للمسؤولين وملاك المشروع الذين يتعاملون مع طبقات المعالم مباشرةً، مثل التعامل من خلال ArcGIS API for Python أو ArcGIS REST API.

ملاحظة:‏

تحتوي المشاريع الكلاسيكية على مخطط مختلف عما هو موضح أدناه. للحصول على معلومات حول كيفية أتمتة مشروعات Workforce الكلاسيكية وبرمجتها نصيًا، راجع أتمتة Workforce وبرمجته نصيًا (الكلاسيكي). لترحيل المشروعات الكلاسيكية إلى المخطط الجديد، راجع ترحيل المشروعات الكلاسيكية.

لمزيد من المعلومات، راجع ما المقصود بالمشروع الكلاسيكي.

يتيح لك ArcGIS Workforce تخطيط عمليات سير العمل وإدارتها واكتمالها لجميع أنواع أنشطة الحقل. إنها تتكامل في مؤسسة ArcGIS مع تطبيق ويب لإنشاء وتعيين العمل والتطبيق الخاص بالعمال المتنقلين لإدارة مهامهم. عندما يقوم مالك المشروع بإنشاء مشروع Workforce وتكوينه، يستخدم المرسلون تطبيق الويب Workforce لإنشاء العمل وتعيينه، ويعرض العمال المتنقلون العمل المُعين إليهم ويكملونه باستخدام Workforce وتطبيقات ArcGIS الأخرى الموجودة على هواتفهم الجوالة. يتم اشتقاق سير العمل بالكامل بواسطة مشروع Workforce، مجموعة من طبقات المعالم والخرائط.

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

يتيح لك استخدام الأتمتة والبرمجة النصية باستخدام Workforce لتحقيق تلك الإمكانات. أنت غير مقيد باستخدام تطبيق الويب لإنشاء مهام، كما يعمل Workforce مع محتوى طبقة معالم المهام، دون التقيد بكيفية إنشاء السجلات. يمكن أن ينشأ العمل من أنظمة أخرى داخل مؤسسة، مثل نظام إدارة الأصول أو الصيانة أو نظام 311. ويمكن دمج Workforce مع مصادر داخلية لإنشاء المهام وتحديثها. تحتوي طبقة المهام على حقل workOrderId الذي يعمل بمثابة مفتاح خارجي، ويقوم بتخزين مُعرف فريد يشير إلى أحد الأنظمة الداخلية. يتوفر حقل workOrderId في تفاصيل المهمة في صورة المعرف- يمكن للمرسلين توفير المعلومات، ويمكن للعمال المتنقلين عرضها.

تأكد من التعرف على مخطط مشروعات Workforce وكيفية عمل حقول تاريخ ووقت حالة المهمة قبل بدء الأتمتة والبرمجة النصية. في حين أنه يوصى باستخدام ArcGIS API for Python، يمكنك أيضًا أتمتة Workforce من خلال استخدام ArcGIS REST API لطبقات المعالم.

نظرة عامة على المخطط

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

رسم تخطيطي لمخطط Workforce

ملاحظة:‏

تختلف أسماء بعض الحقول في ArcGIS Enterprise. بدلًا من OBJECTID وGlobalID CreationDate وCreator وEditDate وEditor، تكون objectid وglobalid وcreated_date وcreated_user وlast_edited_date وlast_edited_user على التوالي.

خدمة معالم Workforce

تحتوي خدمة معالم Workforce على الطبقات والجداول التالية:

  • طبقة العمال
    • طبقة المعالم النقطية التي تحتوي على سجل لكل عامل مُتنقل مُضمَّن في المشروع.
    • يشمل المعلومات المتعلقة بالعامل المُتنقل، بما في ذلك رقم جهة الاتصال وعنوان الوظيفة.
    • يُخزن اسم المستخدم ArcGIS المؤسسي الخاص بالعامل المُتنقل في حقل userid.
    • تتبع الطبقة من قام بإنشائها وآخر عملية تحديث لكل عامل مُتنقل.
    • توجد علاقة مفتاح أساسي-مفتاح خارجي (PK-FK) من GlobalID إلى Assignments.workerid. عند استخدام قيمة GlobalID من طبقة العمال كقيمة حقل Assignments.workerid، يتم إقران العامل المتنقل بجميع المهام الخاصة بهم.
    • تحتوي الطبقة على ارتباطات مجال القيمة المكودة التالية:
      • يرتبط حقل status بمجال قيمة Worker_Status المرمزة لتتبع حالة العامل المتنقل.
  • طبقة المهام
    • طبقة المعلم النقطية التي تحتوي على سجل لكل مهمة.
    • تشمل المعلومات المتعلقة بالمهمة، بما في ذلك الحالة والموقع والوصف، بين الأخرين.
    • تتبع الطبقة من قام بإنشائها وأخر عملية تحديث لكل مهمة.
    • يتم تمكين المرفقات على طبقة المعلم.
    • تحتوي الطبقة على مفاتيح خارجية لبعض الحقول، التي تقترن القيم من طبقة أخرى مع هذه الطبقة:
      • Assignments.workerid إلى Workers.GlobalID.
      • Assignments.dispatcherid إلى Dispatchers.GlobalID.
      • Assignments.workorderid يمكن استخدامه كمفتاح خارجي إلى نظام خارجي، مثل نظام إدارة الأصول أو الصيانة، عن طريق توفير قيم من النظام الأخر.
      • توجد علاقة PK-FK من GlobalID إلى Assignment.assignmenttype. يؤدي استخدام قيمة GlobalID من طبقة المهام على أنها قيمة حقل Assignments.assignmenttype، إلى ارتباط المهمة بنوع المهمة.
    • تحتوي الطبقة على ارتباطات مجال القيمة المكودة التالية:
      • يرتبط حقل status بمجال قيمة Assign_Status المرمزة لتتبع حالة العامل المتنقل.
      • يتم إقران حقل priority بمجال قيمة Priority المرمزة لإدارة أولوية مهام العمل.
    تنبيه:

    إذا كانت المهمة تتضمن قيمة null للشكل الهندسي الخاص بها، فلن تظهر في Workforce.

  • جدول المرسلين
    • هو جدول يحتوي على سجل لكل مرسل في المشروع.
    • يشمل المعلومات المتعلقة بالمرسل، بما في ذلك الاسم ورقم جهة الاتصال.
    • يُخزّن اسم مستخدم ArcGIS المؤسسي الخاص بالمرسل في حقل userid.
    • تتبع الطبقة من قام بإنشائها وأخر عملية تحديث لكل مرسل.
    • توجد علاقة PK-FK من GlobalID إلى Assignments.dispatcherid. يؤدي استخدام قيمة GlobalID من جدول المرسلين على أنها قيمة حقل Assignments.dispatcherid إلى ارتباط المرسلين بجميع المهام التي قاموا بتعيينها.
  • جدول أنواع المهام
    • هو جدول يحتوي على سجل لكل نوع مهمة في المشروع.
    • يكون هذا الجدول فارغًا عند إنشاء المشروع. إنه يحتوي على قيم بمجرد إضافة أنواع المهمة أثناء عملية تكوين المشروع.
    • ويتضمن أوصافًا لأنواع المهام المحددة بواسطة مالك المشروع عندما تمت إضافة أنواع المهام.
    • توجد علاقة PK-FK من GlobalID إلى Assignments.assignmenttype. يؤدي استخدام قيمة حقل GlobalID من جدول أنواع المهام إلى ربط نوع المهمة بالمهام.
  • جدول عمليات تكامل المهام
    • هو جدول يحتوي على سجل لكل تكامل مهمة في المشروع.
    • يحتوي هذا الجدول على سجل للتكامل مع ArcGIS Navigator عند إنشائه.
    • يحتوي جدول عمليات تكامل المهام على السمات التالية المحددة من قبل المستخدم، بالإضافة إلى السمات القياسية المحددة من قبل النظام:
      • app—معرّف التطبيق المتكامل الذي سيساعد في العثور على تكوينات التكامل اللازمة لملء تجربة التكوين في تطبيق الويب—على سبيل المثال، arcgis-collector أو https://collector.arcgis.app.
      • assignmenttypeGlobalID لنوع مهمة إذا تعيّن عرض التكامل لأنواع مهام معينة فقط. تشير قيمة null إلى أن التكامل يدعم كافة أنواع المهام في المشروع.
      • prompt—المطالبة المعروضة لدى العميل المتنقل—على سبيل المثال، الانتقال إلى المهمة.
      • urltemplate—عنوان URL الخاص بالقالب المستخدم لاستدعاء التطبيق المتكامل.
    • للعثور على عمليات التكامل التي تنطبق على مهمة معينة، استخدم إحدى عبارات أين التالية: assignmenttype = null أو assignmenttype = '<assignment-type-id>'. تتمكن هذه العبارات من إيجاد جميع عمليات التكامل على مستوى المشروع وجميع عمليات التكامل على مستوى النوع لنوع المهمة الحالية.
    • للعثور على عمليات التكامل القابلة للتطبيق على مشروع ما، استعلم عن طريق التطبيق باستخدام إحدى عبارات أين، مثل appid = 'arcgis-collector'.

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

  • Assign_Status—تُخزن القيم السبع الصالحة لحالة المهمة. تكون القيم من 0 إلى 20 مخصصة للاستخدام المستقبلي بواسطة Workforce. يجب أن يقوم العملاء الذين يرغبون في تخزين قيمهم الخاصة في هذا الحقل باختيار قيمة من خارج هذا النطاق.
  • Priority—تقوم بتخزين القيم الأربع الصحيحة الخاصة بأولوية المهمة.
  • Worker_Status—تخزن القيم الثلاث الصحيحة لحالة العامل المتنقل.

    بالنسبة لقيم مجالات القيمة المرمزة، راجع الرسم التخطيطي للمخطط Workforce.

علاقة العنصر الخاصة بخريطة الويب

تُعرَّف علاقة العنصر بين خدمة معالم Workforce وخرائط الويب الخاصة بالمرسل والعامل على النحو التالي:

  • نوع العلاقة—WorkforceMap2FeatureService
  • نوع الأصل—خريطة الويب
  • نوع الوجهة—خدمة المعالم
  • القواعد
    • mustOwnAllItems—يقوم مالك المشروع بتأسيس العلاقة ويجب أن يمتلك الخريطة ذات الصلة.

عندما يكون لخريطة الويب علاقة عنصر بخدمة معالم Workforce، تتم إضافة المعلومات التالية إلى بيانات التعريف الخاصة بها:

  • title—عنوان المشروع.
  • snippet—الوصف المختصر للمشروع.
  • thumbnail—الصورة المصغرة للمشروع.
  • typeKeywordsWorkforce Worker تتم إضافته إلى خريطة العامل وWorkforce Dispatcher تتم إضافته إلى خريطة المرسل.

حقول تاريخ ووقت حالة المهمة.

يوجد لدى كل حالة مهمة محددة في مجال Assign_Status حقل تاريخ ووقت متطابق في طبقة معلم المهام. تحتوي هذه الحقول على أحدث تاريخ ووقت كانت فيه المهمة في الحالة المطابقة. عندما يتم استخدام الحالة لأول مرة لمهمة محددة، يتم ملء حقل التاريخ والوقت المقترن. عندما تكون المهمة في الحالة نفسها لاحقًا، يتم تحديث حقل الوقت والتاريخ بالتاريخ والوقت الجديدين. على سبيل المثال، عندما يتم تعيين مهمة لأول مرة، فإن التاريخ المُعين هو التاريخ والوقت الحالي. إذا تمت إعادة تعيينه بعد ثلاث ساعات، فسيتم تحديث حقل assignedDate إلى الوقت الجديد، ويتم إزالة وقت المهمة الأصلي.

إذا تم ملء حقل inprogressdate أو declineddate أو pauseddate عند إعادة تعيين مهمة، فسيتم تعيينها إلى null.

حالة المهمةحقل التاريخ والوقت المتطابق

غير معين

creationdate

تم إسناده

assigneddate

قيد التقدم

inprogressdate

اكتمل

completeddate

تم الرفض

declineddate

تم الإيقاف المؤقت

pauseddate

ملاحظة:‏

لا تحتوي الحالة التي تم إلغائها على حقل تاريخ ووقت مقترن. يمكن استخدام حقل تتبع المحرر editdate لتحديد تاريخ ووقت إلغاء مهمة، ما دام لم يتم إجراء أي عمليات تحرير أخرى منذ الإلغاء.

للتعرف على القيمة بصورة أفضل عند تعيينها، ضع في الاعتبار السيناريوهات التالية:

  • إعادة تعيين العمل المُوكل مسبقًا
    • لقد قمتَ بتعيين مهمة في الوقت t1، لذا يكون assigneddate هو t1.
    • ولاحقًا، في الوقت t2، يتم إعادة تعيين المهمة إلى عامل متنقل آخر، لذا يكون assigneddate هو t2.
  • إعادة تعيين العمل المرفوض
    • لقد قمتَ بتعيين مهمة في الوقت t1، لذا يكون assigneddate هو t1.
    • يرفض العامل المتنقل المهمة في الوقت t2، لذا يكون declineddate هو t2. تظل قيمة assigneddate عند t1.
    • أنت تقوم بتعيين المهمة إلى عامل متنقل آخر في الوقت t3، لذا يكون assigneddate هو t3. قيمة declineddate الآن تساوي null.
  • إيقاف العمل مؤقتًا واستئنافه
    • لقد قمتَ بتعيين مهمة في الوقت t1، لذا يكون assignedDate هو t1.
    • يبدأ العامل المتنقل المهمة في الوقت t2، لذا يكون inprogressDate هو t2. تظل قيمة assigneddate عند t1.
    • يقوم العامل المتنقل بإيقاف المهمة مؤقتًا في الوقت t3، لذا يكون pauseddate هو t3. تظل قيمة assigneddate عند t1 وتظل قيمة inProgressDate عند t2.
    • يقوم العامل المتنقل بإعادة تشغيل المهمة في الوقت t4، لذا يكون inprogressdate هو t4. تظل قيمة assigneddate عند t1 وتظل قيمة pauseddate عند t3.
  • إعادة تعيين العمل المتوقف مؤقتًا
    • لقد قمتَ بتعيين مهمة في الوقت t1، لذا يكون assigneddate هو t1.
    • يبدأ العامل المتنقل المهمة في الوقت t2، لذا يكون inprogressdate هو t2. تظل قيمة assigneddate عند t1.
    • يقوم العامل المتنقل بإيقاف المهمة مؤقتًا في الوقت t3، لذا يكون pauseddate هو t3. تظل قيمة assigneddate عند t1 وتظل قيمة inprogressdate عند t2.
    • أنت تقوم بتعيين المهمة إلى عامل متنقل آخر في الوقت t4، لذا يكون assigneddate هو t4. أصبحت قيم inprogressDate وpauseddate الآن null.

استخدام ArcGIS API for Python (موصى به)

استخدم ArcGIS API for Python ووحدة Workforce النمطية الخاصة به لأتمتة Workforce وبرمجته نصيًا. يمكن تفسير المهام المنشأة بواسطة وحدة Workforce بواسطة Workforce، وذلك لأنها تتبع المخطط نفسه. للحصول على الأمثلة وأفضل الممارسات، راجع نماذج البرامج النصية في مستودع البرامج النصية لـ Workforce في GitHub. تعرض البرامج النصية كيفية استخدام بايثون لإكمال العديد من المهام، مثل مهام التحميل البرمجية من مصادر البيانات الخارجية والاستيراد وإدارة العمال وإزالة المهام المكتملة، وغير ذلك المزيد. يمكنك أيضًا استخدام دليل Jupyter Notebook لإدارة مشروعات ArcGIS Workforce لرؤية بعض العمليات النموذجية. لبدء استخدام وحدة Workforce، يجب تثبيت ArcGIS API for Python وإعداده أولاً.

ملاحظة:‏

لأتمتة مشاريع Workforce، يجب عليك استخدام ArcGIS API for Python 1.8.3 أو الإصدارات الأحدث.

بدء استخدام وحدة Workforce

تسمح لك وحدة Workforce بإنشاء مشروعات كلاسيكية بالإضافة إلى المشروعات الممكّنة للاستخدام في وضع عدم الاتصال. قم بإنشاء مشروعات باستخدام وحدة Workforce عن طريق إتمام الخطوات التالية:

  1. سجّل الدخول إلى ArcGIS Online عن طريق تشغيل الأمر التالي إما في برنامج Python النصي أو في وحدة تحكم Python:

    gis = arcgis.gis.GIS("https://arcgis.com", "<username>", "<password>")

  2. قم بإنشاء إما مشروع كلاسيكي أو مشروع ممكّن للاستخدام دون اتصال من خلال تشغيل أحد الأوامر التالية:

    إنشاء مشروع كلاسيكي

    version1_project = arcgis.apps.workforce.create_project("<project-title>", "<project-summary>", major_version=1)

    إنشاء مشروع ممكّن للاستخدام دون اتصال

    version2_project = arcgis.apps.workforce.create_project("<project-title>", "<project-summary>", major_version=2)

للحصول على معلومات حول كيفية استخدام وحدة Workforce لتعديل المهام وأنواع المهام والعاملين والمرسلين وعمليات تكامل التطبيق، راجع مستند ArcGIS API for Python الخاص بوحدة Workforce النمطية.

استخدام ArcGIS REST API مع طبقات المعالم الحالية

تنبيه:

يوصى باستخدام ArcGIS API for Python. يشمل ضمانات متعددة تحمي تكامل مشروع Workforce.

يمكنك أتمتة Workforce باستخدام ArcGIS REST API لطبقات المعالم. عند استخدام ArcGIS REST API، سوف يتعين عليك استخدام تنسيق كائن المعلم لإنشاء المهام وتحديثها. راجع الأقسام أدناه للحصول على تفاصيل حول الإنشاء والتحديث والتعيين للمهام باستخدام ArcGIS REST API.

إنشاء مهمة باستخدام ArcGIS REST API

يعمل Workforce مع محتوى طبقة معلم المهام، بغض النظر عن كيفية إنشاء السجلات. ليس هناك طلب لإنشاء مهام من خلال تطبيق ويب Workforce. إذا تم إنشاء سجل بشكل صحيح في طبقة معلم المهام باستخدام ArcGIS REST API، فسيتعرف عليها Workforce كمهمة صالحة في كل من تطبيقات الويب والهاتف الجوال.

عند إنشاء مهمة باستخدام ArcGIS REST API، استخدم الأمر إضافة معالم. تتطلب بعض الحقول قيمًا، ويمكنك توفير قيم لحقول أخرى إذا كانت المهمة تتطلب قيمًا، في حين أن بعض الحقول لا يمكن أن تحتوي على قيم.

تتطلب الحقول الموضحة في الجدول التالي قيمًا:

الحقلتعريفقيمة لتوفيرها

SHAPE

موقع النقطة الخاص بالمهمة.

زوج إحداثي س وص.

status

حالة المهمة مشتقة من القيم الموجودة في مجال assign_status.

  • 0 (غير مُعين)—أنشئ عملاً غير مُعين.
  • 1 (مُعين)—عيّن العمل كجزء من عملية الإنشاء.
تنبيه:

إذا كنت تقوم بتعيين العمل، يجب عليك تضمين قيم حقلي workerid وassigneddate الموضحين أدناه.

assignmenttype

نوع المهمة، المشتق من قيم GlobalID في جدول أنواع المهام.

إحدى قيم GlobalID الصالحة في جدول أنواع المهام.

location

الوصف النصي لموقع النقطة الخاص بالمهمة.

عنوان، زوج الإحداثي س وص، أو أي نص وصفي.

dispatcherid

مُعرف المرسل الذي يقوم بإنشاء المهمة، مشتق من قيم GlobalID في جدول المرسلين.

إحدى قيم GlobalID الصالحة لمرسل معين مرتبط بالمشروع.

يُمكن أيضًا تضمين القيم الخاصة بالحقول الاختيارية التالية:

الحقلتعريفقيمة لتوفيرها

description

معلومات للعامل المتنقل حول المهمة.

نص خاص بالعامل المتنقل. يتم التعامل مع المسافة البيضاء بواسطة قيمة لكل خط.

priority

أولوية المهمة.

قيمة صحيحة من نطاق Priority.

workorderid

مفتاح خارجي يشير إلى أمر عمل من نظام خارجي أو جهة خارجية.

قيمة من نظامك الخارجي.

duedate

التاريخ والوقت اللذان يجب أن يتم خلالهما إتمام المهمة.

تاريخ وقيمة صحيحة، متوفرة في صورة توقيت UTC بالثواني من الفترة الماضية

ملاحظة:‏

لتوفير تاريخ مستحق بدون وقت، حدد التاريخ واستخدم 11:59:59 مساءً في صورة الوقت.

لتعيين العمل كجزء من عملية الإنشاء، استخدم الحالة 1 (كما هو مذكور أعلاه) وقم بتوفير الحقول التالية أيضًا:

الحقلتعريفقيمة لتوفيرها

workerid

معرّف العامل المتنقل المُوكل بالمهمة، مشتق من قيم GlobalID في طبقة العمال.

قيمة GlobalID صالحة خاصة بالعامل المتنقل الذي تقوم بتعيينه.

assigneddate

تاريخ ووقت تعيين المهمة.

التاريخ والوقت الحاليان، متوفران في صورة التوقيت العالمي المنسق بالثواني من الفترة الأخيرة.

تُدار الحقول الأخرى في طبقة المهام بواسطة نظام ArcGIS الأساسي، بما في ذلك الحقول المميزة بعلامة كجزء من ArcGIS أو حقول تتبع المحرر في الرسم التخطيطي للمخطط. لا تُقدم هذه القيم أو تعدلها.

تعيين مهام باستخدام ArcGIS REST API

في القسم السابق، تعلمت كيفية إنشاء مهمة معينة. الآن، ستتعلم كيفية تعيين مهمة موجودة. استخدم الأمر ArcGIS REST API تحديث المعالم، الذي يتم تمريره في مصفوفة معالم ليتم تحديثها. بالنسبة لكل معلم، يتعين عليك تقديم هذه الحقول الثلاثة لتعيين أو إعادة تعيين مهمة:

الحقلتعريفقيمة لتوفيرها

status

حالة المهمة مشتقة من القيم الموجودة في مجال Assign_Status.

1 (مُعين)

workerid

معرّف العامل المتنقل المُوكل بالمهمة، مشتق من قيم GlobalID في طبقة العمال.

قيمة GlobalID خاصة بالعامل المتنقل الذي تقوم بتعيينه.

assigneddate

تاريخ ووقت تعيين المهمة.

التاريخ والوقت الحاليان، متوفران في صورة التوقيت العالمي المنسق بالثواني من الفترة الأخيرة.

dispatcherid

مُعرف المرسل الذي يقوم بإنشاء المهمة، مشتق من قيم GlobalID في جدول المرسلين.

إحدى قيم GlobalID الصالحة لمرسل معين مرتبط بالمشروع.