वर्कफ़्लो अनुप्रयोग

वर्कफ़्लो अनुप्रयोग एक सॉफ़्टवेयर अनुप्रयोग है जो कम से कम कुछ सीमा तक, एक प्रक्रिया या प्रक्रियाओं को स्वचालित करता है। प्रक्रियाएँ सामान्यतः व्यवसाय-संबंधी होती हैं, लेकिन यह कोई भी प्रक्रिया हो सकती है जिसके लिए सॉफ़्टवेयर के माध्यम से स्वचालित होने के लिए चरणों की एक श्रृंखला की आवश्यकता होती है। प्रक्रिया के कुछ चरणों में मानवीय हस्तक्षेप की आवश्यकता हो सकती है, जैसे अनुमोदन या कस्टम टेक्स्ट का विकास, लेकिन जिन कार्यों को स्वचालित किया जा सकता है उन्हें अनुप्रयोग द्वारा नियंत्रित किया जाना चाहिए। उन्नत अनुप्रयोग उपयोगकर्ताओं को ऑपरेशन में नए घटकों को पेश करने की अनुमति देते है।

उदाहरण के लिए, एक खरीद आदेश पर विचार करें जो प्राधिकरण और अंतिम खरीद के लिए विभिन्न विभागों से होकर गुजरता है। आदेश को अनुमोदन के लिए स्वचालित रूप से एक विभाग से दूसरे विभाग में ले जाया जा सकता है। जब सभी प्राधिकरण प्राप्त हो जाते हैं, तो खरीद आदेश के अनुरोधकर्ता को सूचित किया जाता है और प्राधिकरण दिया जाता है। वर्कफ़्लो प्रक्रिया में बार-बार रखरखाव सम्मलित हो सकता है। उदाहरण के लिए, खरीद आदेशों का सामान्य अनुमोदक छुट्टी पर हो सकता है, ऐसी स्थिति में, आवेदन वैकल्पिक अनुमोदकों से अनुमोदन का अनुरोध करेगा।

विकास
वर्कफ़्लो अनुप्रयोग को ग्राफिकल डिज़ाइनर, प्रोग्रामिंग भाषा या दोनों के संयोजन का उपयोग करके विकसित किया जा सकता है।

कुछ सॉफ़्टवेयर उत्पाद अकेले आरेख-आधारित ग्राफ़िकल डिज़ाइनर के साथ वर्कफ़्लो अनुप्रयोग बनाने का साधन प्रदान करते हैं। इस प्रकार की प्रणालियाँ गैर-प्रोग्रामर के उद्देश्य से एक विशेष इंटरफ़ेस के माध्यम से वर्कफ़्लो प्रक्रिया से संबंधित सभी जानकारी को कैप्चर करने की क्षमता पर निर्भर करती हैं, और फिर उस जानकारी को एक कार्यात्मक वर्कफ़्लो अनुप्रयोग में संकलित करती हैं। हालाँकि, कभी-कभी प्रोग्रामिंग भाषा के उपयोग की आवश्यकता तब उत्पन्न होती है जब अधिक जटिल नियमों को वर्कफ़्लो में एकीकृत करने की आवश्यकता होती है, जैसे कि इनपुट फॉर्म में डेटा को मान्य करने के लिए गणना।

कोड-आधारित वर्कफ़्लो डिज़ाइन के लिए, वर्कफ़्लो अनुप्रयोगों को किसी भी सामान्य प्रयोजन प्रोग्रामिंग भाषा के साथ विकसित किया जा सकता है, लेकिन विशेष वर्कफ़्लो भाषाएँ भी उपस्थित हैं। ये सामान्यतः संबद्ध ग्राफिकल नोटेशन (जैसे बिजनेस प्रोसेस मॉडलिंग नोटेशन) के साथ आते हैं। लेकिन कुछ टेक्स्टुअल या XML-आधारित होते हैं। इस प्रकार वर्कफ़्लो परिभाषा के लिए जिन विशिष्ट भाषाओं का उपयोग किया जा सकता है उनमें सम्मलित हैं:
 * एक्सपीडीएल
 * YAWL (एक और वर्कफ़्लो भाषा)
 * एससीयूएफएल (सरल वैचारिक एकीकृत प्रवाह भाषा)

उपरोक्त भाषाएँ XML सिंटैक्स पर आधारित हैं और सॉफ़्टवेयर द्वारा हेरफेर के लिए उपयुक्त होने के अतिरिक्त, गैर-तकनीकी लोगों के लिए उनके साथ काम करना मुश्किल हो सकता है। इसलिए, उनका उपयोग सामान्यतः ग्राफ़िकल नोटेशन द्वारा बढ़ाया जाता है जिससे फ़्लोचार्ट-जैसे आरेखों का निर्माण संभव हो जाता है जो लोगों के लिए विकसित करना और व्याख्या करना आसान होता है: ऐसे आरेख बनाना वास्तव में "ग्राफ़िकल" प्रोग्रामिंग का एक रूप है। सॉफ़्टवेयर पैकेज जो उपयोगकर्ता को वर्कफ़्लो आरेख विकसित करने की अनुमति देता है, सामान्यतः आरेख को उसके XML समकक्ष में अनुवादित करेगा।

वर्कफ़्लो अनुप्रयोगों को विकसित करने का एक अन्य तरीका पुस्तकालयों और इंटरफेस के संयोजन में एक प्रोग्रामिंग भाषा का उपयोग करना है जो कार्य समन्वय के लिए अमूर्तता को कैप्चर करता है। ऐसी लाइब्रेरी और इंटरफ़ेस के उदाहरण निम्नलिखित हैं:
 * विंडोज़ वर्कफ़्लो फ़ाउंडेशन (WF)
 * वर्कफ़्लो ओएसआईडी

पुस्तकालयों (कंप्यूटिंग) का उपयोग सामान्यतः आरेखण तकनीकों का पूरक होता है, जो पूरी तरह कार्यात्मक अनुप्रयोग बनाने के लिए हमेशा अपने आप में पर्याप्त नहीं होते हैं (जब तक कि आरेखण उपकरण एक विशिष्ट वर्कफ़्लो प्रबंधन प्रणाली का भाग न हो)। उदाहरण के लिए, WF वर्कफ़्लो को माइक्रोसॉफ्ट विजुअल स्टूडियो का उपयोग करके आरेखीय रूप से बनाया जा सकता है (उनका XML समतुल्य XAML है), और उनकी कार्यक्षमता C# या VB.NET में लिखे गए कोड के साथ संवर्धित की जा सकती है: किसी दिए गए वर्कफ़्लो को उपस्थिता सॉफ़्टवेयर अनुप्रयोग द्वारा वेब सेवा के रूप में बुलाया जा सकता है। विज़ुअल स्टूडियो या जावा के लिए कई कोडिंग वातावरण जैसे सॉफ़्टवेयर विकास उपकरण भी विशेष घटकों को पूरी तरह से कोड में डिज़ाइन करने की अनुमति देंगे और फिर उन्हें संकलित करने के पश्चात वर्कफ़्लो आरेखों में बिल्डिंग ब्लॉक के रूप में उपयोग किया जाएगा।

कुछ विशुद्ध रूप से आरेख-आधारित तकनीकों की एक सीमा, जैसे कि ऊपर बीपीएमएन, यह है कि वर्कफ़्लो विनिर्देश के उद्देश्य को फिट करने के लिए, डेटा पासिंग को कैप्चर करने के लिए अतिरिक्त संरचनाओं के साथ ऐसे नोटेशन को बढ़ाने की आवश्यकता होती है, जिससे कि कार्यों को उनके कार्यान्वयन के साथ जोड़ा जा सके आदि। बीपीएमएन, चूंकि एक मानक के रूप में सेवा करने का संकल्प रखता है, इस संबंध में कमी है, और इसलिए कई वाणिज्यिक पैकेज (जैसे माइक्रोसॉफ्ट बिज़टॉक) इन जरूरतों को मालिकाना उपायो से संबोधित करते हैं (विशेष रूप से, आवश्यक कार्यक्षमता का समर्थन करने वाले अतिरिक्त आइकन के साथ आरेखण आइकन के मूल सेट को बढ़ाकर)।

स्थैतिक विश्लेषण के प्रयोजन के लिए, उदा. डिज़ाइन-समय पर सिमेंटिक त्रुटियों का पता लगाने के लिए, पेट्री नेट जैसे औपचारिक नोटेशन का उपयोग करके वर्कफ़्लो को गणितीय रूप में प्रस्तुत करना भी संभव है।