در بعضی موارد برای طراحی یک فرآیند در شیرپوینت لازم است یک فرآیند دیگر فرآخوانی گردد. تغییر یا اصلاح یک فرآیند بزرگ و طولانی می تواند سخت باشد اما می توان فرآیندهای طولانی را به فرآیندهای کوچکتری تقسیم کرد و فرآیند اول در پایان گردش کاری خود فرآیند بعدی را فرآخوانی کند.
همچنین این یک مزیت است که اگر خطایی وجود داشته باشد گردش کار را می توان به جای شروع از ابتدا از یک نقطه خاص مجدد شروع کرد.
تفاوت Call web service و Start Workflow
Start Workflow اجازه می دهد تا کاربر یک فرآیند کاری در همان لیست ایجاد کند. اما اغلب شروع فرآیند در یک لیست متفاوت مورد نیاز است. همچنین در صورتی که فرآیند بخشی از یک فرآیند بزرگ تر است انتقال متغییر ها ضروری است که با call web service قابل انجام است.
با Call Web Service می توانید یک SOAP Web Service را فرآخوانی کنید که معمولا برای فرآخوانی SharePoint web services استفاده می شود. میتوان برای ارتباط با یک وب سرویس خارجی نیز از این عملکرد استفاده کرد.
شروع فرآیند
برای شروع یک فرایند به کمک این عملکرد از روش زیر استفاده کنید:
در قسمت URL قسمت Insert Reference انتخاب کرده و در تب Common،Web URL را انتخاب کنید. سپس عبارت زیر را مقابل آن اضافه کنید
/_vti_bin/NintexWorkflow/Workflow.asmx
Username و Password دارای دسترسی را وارد کنید.
سپس در قسمت Web Metod بعد از زدن کلید Refresh گزینه start workflow را انتخاب کنید.
در قسمت Web service output در صورت نیاز به شروع فرآیند با پارامتر های خاص می تواند تکمیل گردد. در غیر اینصورت فیلدها را خالی باقی بگذارید.
اجرای فرآیند روی یک آیتم در لیست
در صورتی از این روش استفاده می شود که یک فرآیند باید مستقیما روی یک مورد لیست اجرا شود .با این عملکرد شما می توانید هر فرآیند در سایت شیرپوینت را آغاز کنید.
برای استفاده از عملکرد زیر به صورت زیر عمل نمایید:
مانند نمونه قبل موارد را انجام دهید و سپس در قسمت Web Metod گزینه StartWorkflowOnListItem را انتخاب نمایید.
در قسمت Web Service input موارد را مطابق نمونه تکمیل نمایید:
انتقال متغیرها بین فرایندها
برای انجام این کار لازم است از گزینه start data استفاده کنیم.برای انجام اینکار به روش زیر اقدام کنید:
در فرآیند خود در قسمت Workflow setting گزینه variable را انتخاب و متغیر تعریف نمایید.
با کمک یک عملکرد متغیرها را پر کنید.
در حال حاضر دو متغیر texta و number1به ترتیب با testvalue1 و 12345 پر شده اند.
حالا در Call Web Service در قسمت associationData (string) گزینه Reference را انتخاب کنید. متغیر مورد نظر خود را انتخاب کنید.
تیک گزینه Encode inserted tokens را انتخاب نمایید. نتایج را در یک متغیر ذخیره نمایید.
اجرای فرآیند روی تمام آیتم های یک لیست
با استفاده از گزینه StartWorkflowOnListItemID می توان فرآیند را روی همه آیتم های لیست اجرا نمود. برای اینکار ابتدا مطابق مثال زیر دو متغیر بسازید. یک متغیر Collection و یک متغیر List Item ID لازم است.
اولین قدم این است که همه آیتم ها در لیست فعلی را جستجو کنیم و شناسه یا ID را در یک متغیر ذخیره کنیم. با کمک عملکرد Query List و For Each میتوان تمام این شناسه ها در یک Collection ذخیره شود.
حالا call Web Service را اضافه میکنیم و در web Metod گزینه StartWorkflowOnListItem را انتخاب می کنیم.
در قسمت ItemId از متغیر حاوی Id ها را اضافه می کنیم. اسم لیست در ListName و نام فرآیند مورد نظر در WorkflowName وارد می کنیم.
فرایند به صورت زیر طراحی می گردد:
بدین صورت فرایند روی همه ایتم ها اجرا می شود.
دریافت پیوست ها با call Web Service
بدین منظور به صورت زیر Call web service را config کنید:
URL ها را از XML استخراج و آنها را در یک متغیر( attachment_coll) مجموعه به کمک عملکرد Query XML ذخیره کنید.
به ازای هر URL مراحل زیر اجرا می شود:
پیوست از آیتم در متغیر attachment_base64 ذخیره می شود.
با عملکرد Regular Expression نام فایل را دریافت می کنیم:
از call Web service با AddAttachmentCollection برای اضافه کردن پیوست ها استفاده میکنیم:
در حال حاضر تمام پیوست های در مورد لیست ذخیره می شود.
سرکار خانم نینا خزدوز
با سلام و احترام و تشکر از مقاله خوب شما
در این جا چند سوال مطرح می باشد که خواهشمند است در صورت امکان پاسخ فرمائید :
1. پس از فراخوانی فرایند دوم (که از لیست دیگری است) چه اتفاقی برای فرایند اول می افتد.
2. آیا کسی که فرایند اول را اجرا نموده متوجه می شود که در این مرحله باید صبر کند تا فرایند دوم اجرا گردد.
3. پس از اتمام فرایند دوم، فرایند اول چگونه متوجه اتمام فرایند دوم خواهد شد تا بتواند ادامه فرایند را اجرا نماید.