بحاجة إلى مساعدة في سير العمل في الهواء الطلق

StackOverflow https://stackoverflow.com/questions/2702405

  •  01-10-2019
  •  | 
  •  

سؤال

مرحبا جدا المجتمع ،

لم أحصل على أي حظ في الحصول على المساعدة في منتديات Alfresco ، وآمل أن يكون المزيد هنا. نحن نقوم ببناء تطبيق يعتمد على Alfresco و JBPM وقد حددت سير عمل ، لكنني إما حددته خطأً أو أفتقد شيئًا ما أو هناك أخطاء في تكامل Alfresco مع JBPM وأحتاج إلى مساعدة في معرفة أيها وإصلاحها. هذه هي المشكلة:

لدي سير عمل متقدم وأحاول إطلاقه من JavaScript. فيما يلي الرمز الذي أستخدمه لبدء سير العمل:

var nodeId = args.nodeid;
var document = search.findNode("workspace://SpacesStore/" + nodeId);
var workflowAction = actions.create("start-workflow");
workflowAction.parameters.workflowName = "jbpm$nmwf:MyWorkflow";
workflowAction.parameters["bpm:workflowDescription"] = "Please edit: " + document.name;
workflowAction.parameters["bpm:assignees"] = [people.getPerson("admin"), people.getPerson("andyg")];
var futureDate = new Date();
futureDate.setDate(futureDate.getDate() + 7);
workflowAction.parameters["bpm:workflowDueDate"] = futureDate;
workflowAction.execute(document);

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

هناك 8 مهام و 22 تحولات في سير العمل. عندما أستخدم وحدة التحكم في سير العمل لبدء سير العمل وإنهاء مهمة البدء ، فإنها تتبع بشكل صحيح انتقال عقدة البدء الافتراضي إلى المهمة التالية. تظهر المهمة الجديدة في "مهام العرض" ولكنها لا تظهر في "إظهار مهاماتي" (على ما يبدو لأن المهمة تم استكمالها لسبب ما ، على الرغم من أنها ليست في العقدة "النهاية"). المهمة هي:

task id: jbpm$111 , name: nmwf:submitInEditing , properties: 18

إذا قمت بـ "إظهار التحولات" ، فإنها تبدو كما أتوقع:

path: jbpm$62-@ , node: In Editing , active: true
 task id: jbpm$111 , name: nmwf:submitInEditing, title: submitInEditing title , desc: submitInEditing description , properties: 18
 transition id: Submit for Approval , title: Submit for Approval
 transition id: Request Copyediting Review , title: Request Copyediting Review
 transition id: Request Legal Review , title: Request Legal Review
 transition id: Request Review , title: Request Review

لا أرغب في نشر سير العمل بأكمله لأنه كبير ، لكن هنا العقدان الأولين:

أولا السباحة:

<swimlane name="initiator"></swimlane>
<swimlane name="Content Providers">
  <assignment actor-id="Content Providers"  class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
     <actor>#{bpm_assignees}</actor>
  </assignment>
</swimlane>

الآن العقد:

<start-state name="start">
    <task name="nmwf:submitTask" swimlane="initiator"/>
    <transition name="" to="In Editing">
        <action>
            <runas>admin</runas>
            <script>
                /* Code to send e-mail that a new workflow was started.  I get this e-mail. */
            </script>
        </action>
    </transition>
</start-state>
<task-node name="In Editing">
    <task name="nmwf:submitInEditing" swimlane="Content Providers" />
    <!-- I put e-mail sending code in each of these transitions, but none are firing. -->
    <transition to="In Approval" name="Submit for Approval"></transition>
    <transition to="In Copyediting" name="Request Copyediting Review"></transition>
    <transition to="In Legal Review" name="Request Legal Review"></transition>
    <transition to="In Review" name="Request Review"></transition>
</task-node>

هنا هو نموذج هاتين العقدتين:

 <type name="nmwf:submitTask">
    <parent>bpm:startTask</parent>


    <mandatory-aspects>
       <aspect>bpm:assignees</aspect>
    </mandatory-aspects>
 </type>


 <type name="nmwf:submitInEditing">
    <parent>bpm:workflowTask</parent>


    <mandatory-aspects>
       <aspect>bpm:assignees</aspect>
    </mandatory-aspects>
 </type>

فيما يلي السطجة الزائفة لتشغيل سير العمل في وحدة التحكم في سير العمل:

:: deploy alfresco/extension/workflow/processdefinition.xml

deployed definition id: jbpm$69 , name: jbpm$nmwf:MyWorkflow , title: nmwf:MyWorkflow , version: 28

:: var bpm:assignees* person admin,andyg

set var {http://www.alfresco.org/model/bpm/1.0}assignees = [workspace://SpacesStore/73cf1b28-21aa-40ca-9dde-1cff492d0268, workspace://SpacesStore/03297e91-0b89-4db6-b764-5ada2d167424]

:: var bpm:package package 1

set var {http://www.alfresco.org/model/bpm/1.0}package = workspace://SpacesStore/6e2bbbbd-b728-4403-be37-dfce55a83641

:: start bpm:assignees bpm:package

started workflow id: jbpm$63 , def: nmwf:MyWorkflow
path: jbpm$63-@ , node: start , active: true
 task id: jbpm$112 , name: nmwf:submitTask, title: submitTask title , desc: submitTask description , properties: 16
 transition id: [default] , title: Task Done

:: show transitions

path: jbpm$63-@ , node: start , active: true
 task id: jbpm$112 , name: nmwf:submitTask, title: submitTask title , desc: submitTask description , properties: 17
 transition id: [default] , title: Task Done

:: end task jbpm$112

signal sent - path id: jbpm$63-@
path: jbpm$63-@ , node: In Editing , active: true
 task id: jbpm$113 , name: nmwf:submitInEditing, title: submitInEditing title , desc: submitInEditing description , properties: 17
 transition id: Submit for Approval , title: Submit for Approval
 transition id: Request Copyediting Review , title: Request Copyediting Review
 transition id: Request Legal Review , title: Request Legal Review
 transition id: Request Review , title: Request Review

:: show tasks

task id: jbpm$113 , name: nmwf:submitInEditing , properties: 18

:: show my tasks

admin:
 [there is no output here]

لقد تم افتراض أن BPM: المعالم التي أقوم بإعدادها قبل بدء سير العمل في البداية يتم نقلها إلى عقدة المهمة الأولى "في التحرير". من الواضح أن المحلين موجودون على كائن المهمة وليس على كائن سير العمل. أضفت جانب المُحلين إلى مهمة الدولة البدء حتى يتمكن من الاحتفاظ بهم (بعد أن واجهت مشكلة ؛ في البداية لم يكونوا هناك) وربما لا يزالون يجلسون هناك ، لكن حالة البداية قد انتهت قبل أن أحصل على السيطرة مرة أخرى من البرنامج النصي على الويب (لا يساعد ذلك إذا لم يتم إنهاءه ، فأنا بحاجة إلى أن يكون في "في التحرير" حيث يتم استخدام حالة البدء فقط لتسجيل بدء سير العمل).

كان من المربح دائمًا أن الخصائص التي أحتاج إلى تعيينها على كل مهمة تحتاج إلى طلبها قبل إدخال المهمة (عندما تختار انتقالًا ، يجب عليك توفير البيانات للمهمة التالية قبل أن تتمكن من الانتقال فعليًا إلى المهمة التالية مثل عليك التحقق من صحة أن لديك جميع البيانات المطلوبة أول ثم إشارة إلى الانتقال). ومع ذلك ، فإن الكود لبدء سير العمل غير متزامن ، وبالتالي لا يعيد إما سير العمل المباشر أو المهمة الحالية (والتي في حالتي ستكون "في التحرير"). لذلك ، في كلتا الحالتين ، لا يمكنك تعيين متغيرات مثل BPM: Onvisional و BPM: Duedate.

أتساءل عما إذا كانت هذه هي المشكلة في قائمة مهام المستخدم. أقوم بتعيين المحالين في قائمة العقارات ، ولكن ربما يقوم هؤلاء المحاصرون بمهمة Start State ولا يتم نقلهم إلى مهمة "في التحرير"؟

لاحظ أن هذا هو أول سير عمل في JBPM ، لذا من فضلك لا تفترض أنني أعرف ما أفعله. إذا رأيت شيئًا ينظر ، فمن المحتمل أن يكون ولا أعرفه.

شكرا مقدما على أي نصيحة أو مساعدة ،

هل كانت مفيدة؟

المحلول

لذلك ، اتضح أن مشكلتي كانت سوء فهم كيفية القيام بالعديد من المحالين مع السماح لسير العمل بالانتقال مع أي من هؤلاء المحلين. اتضح أن JBPM لا يدعم هذا في نموذج بسيط ، عليك أن تفعل الكثير من العمل أكثر من مجرد تعيين متعددين يعمل.

لدى JBPM مفهوم للمهام المتوازية (باستخدام الشوك) ، لكن الإجراء الطبيعي يتطلب من جميع المحالين إكمال مهامهم قبل انتقال سير العمل. اتضح أن الطريقة الصحيحة لحل ذلك هي توجيه المهمة إلى جميع المحلين ، ولكن عندما يكمل أي من المحالين مهمتهم ، فإننا نقوم بتصحيح المتغير الذي يخزن عدد المحالين الذين يجب عليهم إكمال مهامهم (node.noutofm) إلى Fool JBPM في الانتهاء من المهمة قبل أن يكملها جميع المعاملة (يمكن أن يسمح هذا أيضًا X من أصل Y أن يضطروا إلى إكمال المهمة).

بدلاً من نشر التعليمات البرمجية المحدثة ، إليك المقالات التي استخدمتها لحل هذه المشكلة:

http://forums.alfresco.com/en/viewtopic.php؟f=30&t=8691

http://forums.alfresco.com/en/viewtopic.php؟f=34&t=5189

http://dev.alfresco.com/resource/docs/java/repository/org/alfresco/repo/workflow/jbpm/foreachfork.html

http://wiki.alfresco.com/wiki/workflowadministration#for_each_fork

نصائح أخرى

لست متأكدًا ، لكنني أعتقد أنك تريد <pooledactors> هنا بدلا من <actor>.

ربما هذا هو السبب في أن WF لا يعمل كما هو متوقع.

<actor>#{bpm_assignees}</actor>

أيضًا ، أعتقد أن المهمة يجب أن تكون في مهامك المجمعة ، وليس مهامك ، لأنها مهمة مجمعة (لأنك تحاول تعيين متعددين).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top