استفاده از وب سرویس‌ها در InfoPath

ترفند های شیرپوینت

در InfoPath امکان اجرای توابع Web Service وجود دارد. این امکان، کارایی InfoPath را افزایش می دهد. همانطور که دیده اید توابع موجود در InfoPath محدود هستند و بدون برنامه نویسی امکان افزودن تابع جدید به آن هم نیست.

در شیرپوینت وب سرویس های زیادی از پیش تعریف شده که در InfoPath هم قابل استفاده هستند. یک مثال خیلی معروف استفاده از تابع GetUserProfileByName برای نمایش Display Name کاربر در فرم InfoPath است که اینجا می توانید ببینید.

فهرست سرویس های موجود در شیرپوینت را اینجا ببینید.

در این مقاله مراحل استفاده از وب سرویس را در InfoPath بیان خواهم کرد. فرض هم این است که شما وب سرویس خودم را نصب کرده اید و حالا قصد استفاده از یکی از توابع آن را دارید:

برای شروع باید در بخش Connection یک مورد جدید بسازید. در ریبون بالا:

IPUserProfile_Step1

Data Connections را کلیک کنید. در پنجره ای که باز می شود، دکمه Add را کلیک کنید. پنجره ویزارد باز می شود:

IPUserProfile_Step2

مرحله بعد:

IPUserProfile_Step3

و در پنجره بعد، باید آدرس وب سرویس را وارد کنید. در مثال ما با توجه به نام سرورتان می شود:

http://server-name/_layouts/ahdaUtility/webservice.asmx?WSDL

IPUserProfile_Step4

در مرحله بعد، فهرست توابع موجود در وب سرویس نمایش داده می شود. تابع مورد نظر را انتخاب کنید. بعنوان مثال من تابع Num2Alpha را انتخاب می کنم:

در مرحله بعد، چنانچه InfoPath ساختار پاسخ تابع را نشناسد، نیاز به یک مثال داده ورودی دارد. در مثال ما این مرحله اتفاق نمی افتد ولی در این مرحله یک مقدار معنی دار برای پارامتر های ضروری وارد می کنیم.

در مرحله بعد مقادیر اصلی را باید وارد کرد. می توانید مقادیر اصلی را الان وارد نکرده و در زمان دلخواه توسط Action های InfoPath وارد کنید. که ما هم همین کار را انجام می دهیم. پس این مرحله را رد می کنیم.

مرحله بعد را هم رد می کنیم:

در مرحله آخر تیک گزینه Automatically retrieve… را بر می داریم. چرا که اینکار باعث می شود، تابع اجرا شده و مقادیر را الان بر می گرداند. ولی ما در برنامه هر گاه خواستیم از این تابع استفاده کنیم، مقادیر را توسط Action های InfoPath دریافت خواهیم کرد.

کانکشن ما آماده است.

هروقت نیاز به استفاده از این تابع داشته باشیم:

۱- توسط اکشن Set Field Value مقدار پارامتر های ورودی این کانکشن را پر می کنیم.

۲- توسط اکشن Query for data نتیجه را از کانکشنی که ساختیم فراخوانی می کنیم.

۳- مقدار فراخوانی شده در بخش data از کانکشنی که ساخته ایم قابل دسترس است: