با درود خدمت همکاران گرامی
در این مطلب می خواهم تابع GetWorkStateByCode را توضیح داده و تفاوت آن با تابع GetWorkState را شرح دهم. در حالت معمول و در موارد ساده، در روند اجرای یک گردش کار جاری، نیاز است مقادیر فیلدهای وضعیت گردش کاری جاری و زیرگردش کارها را داشته باشیم. در این موارد از تابع GetWorkStateByCode(WorkflowCode) استفاده می کنیم که فقط یک پارامتر دارد و آن هم کد گردش کار است.
چرا تابع GetWorkStateByCode ؟
ممکن است این سوال مطرح شود که با وجود تابع GetWorkState دیگر چه نیازی به تابع GetWorkStateByCode است. در جواب باید عرض کنم به دو دلیل:
1- برای سادگی و اجتناب از پیچیدگیهای استفاده از SearchWork و درگیری با پارامترهای WorkKey و RequestXML: وقتی ما در یک گردش کار جاری قرار داریم، دیگر چه نیازی به جستجوی کارها و یافتن WorkKey داریم؟ کار مشخص است و همان کار جاری است و لذا فقط یک پارامتر لازم است و آن هم کد گردش کار است.
سوال: اگر کار جاری مشخص است پس در این صورت دیگر چه نیازی به کد گردش کار است؟ جواب این است که هر گردش کار می تواند یک یا چند زیرگردش کار داشته باشد و بنابراین برای تفکیک وضعیت کار اصلی و زیرگردش لازم است که کد گردش کار مشخص شود.
2- اساسا در تابع GetWorkState پیش بینی برای کار جاری نشده است. به عبارت دیگر برای این تابع جاری یا غیرجاری (اتمام یافته) تفاوتی ندارد بنابراین برای این که وضعیت کار جاری را با این تابع بدست آوریم باید کلی زحمت بکشیم و عبارت جستجوی بنویسیم که دقیقا شرایط کار جاری را داشته باشد و بعد از جستجو و یافتن WorkKey، تازه از GetWorkState استفاده کنیم.
3- عدم درگیری با نام کاربری و کلمه عبور: برای دسترسی به وضعیت زیرگردش کار از درون کار اصلی و بالعکس نیازی به نام کاربری و کلمه عبور نیست.
بنابراین با استفاده از GetWorkStateByCode به راحتی می توانیم وضعیت کار جاری و زیرگردشهای آن را بدست آورده و عملیات لازم را روی مقادیر فیلدها انجام دهیم.
توضیح تکمیلی:
تمام کارهایی که با تابع GetWorkStateByCode انجام می شود تا قبل از این با WorkState انجام می شد. تصور من این است که برای یکدستی کار و انطباق با کلاس WorkUtils این تابع ایجاد شده است. ضمن این که در آینده ممکن است تغییراتی در این تابع صورت بگیرد و بسته به نیاز و کاربرد، ویژگی ها و پارامترهای جدیدی برای آن طراحی شود.
امیدوارم این مطلب مفید بوده و مورد استفاده قرار بگیرد. از آقای نجفی هم خواهشمندم اگر اشتباهی در مطالب وجود دارد اصلاح بفرمایند.
با سپاس فراوان