2012-11-25 9 views
8

मैं उपयोगकर्ताओं की एक सूची के लिए उम्मीदवारों के रूप में एक सूची उत्तीर्ण करने में सक्षम होना चाहता हूं। उपयोगकर्ताओं को डेटा सूची से पुनर्प्राप्त किया जाता है और समूह के रूप में उपलब्ध नहीं होता है। एक्टिविटी: उम्मीदवार यूज़र सही दृष्टिकोण प्रतीत होता है।मैं अल्फ्रेस्को में एक्टिविटी वर्कफ़्लो कार्य में उम्मीदवार उपयोगकर्ताओं की एक सूची कैसे पास करूं?

यह मानते हुए कि उपयोगकर्ताओं को चर, ipw_reviwers में प्राप्त और सेट किया गया है।

<serviceTask id="alfrescoScripttask1" name="Alfresco Script Task" activiti:class="org.alfresco.repo.workflow.activiti.script.AlfrescoScriptDelegate"> 
    <extensionElements> 
    <activiti:field name="script"> 
     <activiti:string>logger.log("IPW - setup task"); 
     execution.setVariable('ipw_reviwers', "tom, dick, harry");</activiti:string> 
    </activiti:field> 
    </extensionElements> 
</serviceTask> 

के लिए निम्न चर ipw_reviewers

<userTask id="adhocTask" name="Adhoc Task" activiti:candidateUsers="${ipw_reviewers}" activiti:formKey="wf:activitiReviewTask"> 
    <extensionElements> 
    <activiti:taskListener event="create" class="org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener"> 
     <activiti:field name="script"> 
     <activiti:string>logger.log("IPW - create task"); 
     if (typeof bpm_workflowDueDate != 'undefined') task.setVariableLocal('bpm_dueDate', bpm_workflowDueDate); 
        if (typeof bpm_workflowPriority != 'undefined') task.priority = bpm_workflowPriority;</activiti:string> 
     </activiti:field> 
    </activiti:taskListener> 
    </extensionElements> 
</userTask> 

कोई भी देख सकते हैं या काम का दावा करने में सक्षम है का उपयोग करता है। यदि सूची में केवल एक उपयोगकर्ता है, तो वह उपयोगकर्ता कार्य का दावा करने में सक्षम है।

activiti हैं: candidateUsers

activiti:candidateUsers="tom, dick, harry" 

के रूप में घोषित किया जाता है तो सभी तीन उन कार्य का दावा करने में सक्षम हैं।

क्या उपयोगकर्ताओं की एक सूची सक्रियता में पारित की जा सकती है: उम्मीदवार उपयोगकर्ता एक चर में या एक अलग दृष्टिकोण का उपयोग किया जाना चाहिए?

+0

आप के लिए काम मेरा उत्तर है? –

+0

उपयोगकर्ता 68910801 के नवीनतम उत्तर के समान आप राइनो-आधारित जावास्क्रिप्ट (अल्फ्रेस्को में उपयोग किए गए) में भी एक सूची बना सकते हैं। ए के बाद से इसे संभालने के लिए थोड़ा और परेशान करना है) आपके पास 'Java.type()' ऑपरेशन नहीं है (इसके बजाय आप 'Packages.java.util.ArrayList') का उपयोग करते हैं, बी) राइनो में जावास्क्रिप्ट स्ट्रिंग प्रकार करता है जावा स्ट्रिंग पर नक्शा न करें, और सी) एक सूची को सरणी जैसी वस्तु की तरह निहित रूप से संभाला जाता है और इसकी कुछ विधियां (जैसे जोड़) छुपाया जा सकता है –

उत्तर

4

यह पुष्टि करने के बाद कि समस्या http://activiti.org से सक्रियता 5.10 मौजूद थी और फिर गिट रेपो से सक्रियता के स्रोत के माध्यम से ट्रेल किया गया, मैंने सक्रियता मंचों की खोज की। मैं पर आया था जब आप कई उम्मीदवार उपयोगकर्ताओं को रखना चाहते हैं तो आपको इस मंच http://forums.activiti.org/en/viewtopic.php?f=6&t=3635&p=14187&hilit=candidateuser#p14187 पर संग्रह < स्ट्रिंग > परिवर्तनीय का उपयोग करना होगा।

मैं नहीं पता है जावास्क्रिप्ट से < स्ट्रिंग > एक संग्रह execution.setVariable करने के लिए कैसे (कोई जवाब?), लेकिन ग्रूवी

List<String> users = [ 'tom', 'dick', 'harry'] as String[]; 
execution.setVariable('ipw_reviewers', users); 

का उपयोग कर इस कार्य को

<userTask id="mytask" name="My Task" activiti:candidateUsers="${ipw_reviewers}"> 
</userTask> 

वांछित के रूप में काम करने के लिए अनुमति देता है ।

अल्फ्रेस्को में होने के समय, मैंने डेटा सूचियों से उपयोगकर्ताओं की सूची ढूंढने के लिए जावास्क्रिप्ट का उपयोग किया है और उन्हें एक कार्य में अल्पविराम सीमांकित स्ट्रिंग में रखा है और स्ट्रिंग को परिवर्तित करने वाले ग्रोवी में स्क्रिप्ट कार्य के साथ इसका पालन किया है एक सूची < स्ट्रिंग > निम्न कार्यों में उपयोग के लिए तैयार है।

1

यदि आप अल्फ्रेस्को के भीतर डिफ़ॉल्ट वर्कफ़्लो देखें, जैसे review-pooled.bpmn20.xml, तो आप देखेंगे कि यह potentialOwner तत्व का उपयोग कर रहा है।

एक कार्यप्रवाह से स्निपेट:

<potentialOwner> 
    <resourceAssignmentExpression> 
    <formalExpression>${bpm_groupAssignee.properties.authorityName}</formalExpression> 
    </resourceAssignmentExpression> 
</potentialOwner> 

तो यह इस आरंभ करने के लिए bpm_groupAssignee पहलू उपयोग कर रहा है।

<!-- Submit review to multiple people (as included in a group) --> 
     <type name="wf:submitGroupReviewTask"> 
     <parent></parent> 
     <mandatory-aspects> 
      <aspect>bpm:groupAssignee</aspect> 
     </mandatory-aspects> 
     </type> 

आपके मामले में आप आसानी से अपनी आवश्यकताओं के <formalExpression> टैग को संशोधित कर सकता है।

+0

यह मुझे वर्कफ़्लो को कम से कम समझने में लंबा समय लगा है। मुझे लगता है कि सक्रियता: उम्मीदवार यूज़र अभिव्यक्ति है कि मेरे लिए बनाई गई एक्टिविटी डिज़ाइनर एक सक्रियता विस्तार है जो संभावितऑनर विधि को सरल बनाता है। स्ट्रिंग $ {ipw_reviwers} को पास करने के रूप में औपचारिक अभिव्यक्ति मेरे लिए काम नहीं करती है, लेकिन आपके उत्तर ने कम से कम पुराने ग्रे कोशिकाओं को अनलॉक किया और मुझे आगे बढ़ाना शुरू कर दिया। –

+0

खुशी है कि आपको अपनी समस्या का असली जवाब मिला है। –

0

Nashorn (JDK8) जावा स्क्रिप्ट इंजन में, सूची को परिभाषित करने और एक चर के रूप में सेट, स्क्रिप्ट कार्य की स्क्रिप्ट निम्न के लिए काम करता है:

var ArrayList = Java.type('java.util.ArrayList'); 
var list = new ArrayList(); 
list.add('a'); 
list.add('b'); 
list.add('c'); 
execution.setVariable('list', list); 
+0

ध्यान दें कि अल्फ्रेस्को + एक्टिविटी एम्बेडेड के साथ, जब भी आप कक्षा 'org.alfresco.repo.workflow.activiti.script.AlfrescoScriptDelegate' का उपयोग करते हैं, तो आप राल्फो स्क्रिप्ट इंजन का उपयोग कर रहे हैं जिसे अल्फ्रेस्को के साथ भेज दिया जाता है। जब तक आप सक्रियता एकीकरण के लिए अल्फ्रेस्को-प्रदत्त कक्षाओं का उपयोग नहीं करते हैं, तब तक आप आमतौर पर अल्फ्रेस्को उपयोग मामले में नैशर्न इंजन का उपयोग नहीं करते हैं। केवल जब आप जेडीके 8 पर चलते समय डिफ़ॉल्ट '' या 'org.activiti.engine.impl.bpmn.listener.ScriptTaskListener' का उपयोग करते हैं, तो आप नैशर्न का उपयोग करेंगे। –

संबंधित मुद्दे