تتقدم في الهواء الطلق مهام سير العمل من خلال البرنامج النصي على شبكة الإنترنت

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

  •  20-09-2019
  •  | 
  •  

سؤال

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

وتقريبا كل مثال على البرامج على شبكة الإنترنت كيفية بدء سير العمل، ومن dashlet I يمكن أن نسميه المعالج الأمر مهمة (/ في الهواء الطلق / القيادة / العمل / نهاية / [/ التحول]) إذا كنت أعرف معرف المهمة، ولكن كيف تفعل وأفعل نفس الشيء من البرنامج النصي على شبكة الإنترنت من جانب الخادم تبدأ فقط من وثيقة مرجعية؟

ويجب أن يكون هناك وسيلة لسير العمل الوصول من وثيقة وإدارتها برمجيا.

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

المحلول

ومن وثيقة nodeRef يمكنك إرسال إشارة المهمة الحالية مثل هذا:

var docNodeRef = "workspace://SpacesStore/<GUID HERE>";
var transitionId = "some action";
var theDocument = search.findNode(docNodeRef);
foreach  (currWorkflow in theDocument.activeWorkflows)
{
    var path = currWorkflow.paths[currWorkflow.paths.length-1];
    var task = path.tasks[0];
    for (var transitionKey in task.transitions)
    {
        if (task.transitions[transitionKey] == transitionId)
        {
            path.signal(transitionId);
            break;
        }
    }
}

إذا كنت تريد للإشارة إلى التحول الافتراضي يمكنك تخطي حلقة داخلية ومجرد قيام بذلك:

var docNodeRef = "workspace://SpacesStore/<GUID HERE>";
var transitionId = "some action";
var theDocument = search.findNode(docNodeRef);
foreach  (currWorkflow in theDocument.activeWorkflows)
{
    var path = currWorkflow.paths[currWorkflow.paths.length-1];
    var task = path.tasks[0];
    // Signal default transition
    path.signal(null);
}

نصائح أخرى

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

أولا، أنا يمكن الوصول سير العمل يشارك الوثيقة وإلغاء ما يلي:

for each (workflow in document.activeWorkflows) {
    workflow.cancel();
}

ولكن، ما زلت غير متأكد تماما كيفية التقدم المهام. يمكنني الحصول على هذه المهمة والقيام بشيء ما معها:

var task = workflow.getTask(taskId);
task.endTask(transitionId);

و... ولكن لا يزال لدي أي فكرة عن كيفية الحصول على taskId أو transitionId، برمجيا أو من خلال الهواء الطلق.

وتحرير: حظيت بها، transitionId هو في الواقع اسم الانتقالية على النحو المحدد في XML processdefinition سير العمل:

<transition name="SomeTransitionId" to="end">

وأيضا، للحصول على قائمة من المهام من العمل يمكنك تكرار خلال مسارات (workflow.getPaths ()) ثم من خلال المهام مع path.getTasks ().

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