یکی از امکانات مدرن موتورهای BPMS امکان ارسال پیام به فرآیندهای کار در حال اجراست. این امکان به روشهای متنوعی در سیستمهای مختلف پیادهسازی شده است، مدلی که در سیستم نوسا بسته به امکانات و محدودیتهای ساختاری پیاده سازی شده به شرح زیر است: * هر پیام دارای یک عبارت کلیدی حرفی است که آنرا از سایر پیامها متمایز میکند. * وضعیت آغازین خاصی در هر گردش کار قابل تعریف است که مخصوص دریافت پیام است. این نوع وضعیت، عبارت کلیدی پیامی که قرار است تحویل بگیرد را میداند. * هر پیام قابل ارسال به یک کار است و هر کار در هر لحظه فقط آخرین پیام دریافتی را پردازش میکند. * موتور گردش کار ابتدا درستی پیام رسیده را بررسی میکند و در صورت صحت، آنرا به کار مربوطه تحویل میدهد. اطلاعات پیام درون متغیری به نام WorkMessage در اختیار برنامه گردش کار قرار میگیرد. * عمل پردازش پیام از دو مرحله تشکیل میشود: در مرحل اول تابع WorkProcessMessage صدا زده میشود. برنامه نویس میتواند با نوشتن این تابع در برنامه گردش کار، در همان ابتدای کار کنترلهای بیشتری انجام دهد. علاوه بر آن گاهی اوقات کل پروسه دریافت پیام در حد تغییر مقادیر بعضی از متغیرهای حالت (فیلدهای قابل تعریف) است و نیازی به تغییر مسیر گردش کار نیست. در ضمن اگر در این تابع دستور throw صدا زده شود کل پروسه دریافت پیام لغو میشود. در مرحله دوم اگر وضعیت آغاز پیام مناسب در گردش کار تعریف شده باشد کار در هر مرحلهای که باشد با یک وظیفه خاص به این وضعیت منتقل شده و از آنجا مثل شرایط عادی ادامه پیدا میکند. * هر پیام میتواند دارای دو پارامتر باشد. یک پارامتر عددی (NumberParam) و یک پارامتر حرفی (StringParam). این دو پارامتر توسط موجودی به نام WorkMessage در برنامه گردش کار در اختیار برنامهنویس خواهد بود. با استفاده از تکنولوژی JSON میتوان هر Object دلخواه را توسط StringParam به برنامه گردش کار رساند. * عمل ارسال پیام میتواند به دو طریق صورت گیرد: روش اول از طریق محاوره مربوطه در پنجره مدیریت کارها. در این روش هیچ پارامتری قابل ارسال نیست. روش دوم از درون برنامه گردش کار و توسط تابع WorkUtils.WorkSendMessage که امکان ارسال پارامترها را نیز دارد.
در انتها لازم به ذکر است که استفاده از ظرفیت کامل این امکان نیاز به تجربیات برنامهنویسی دارد که انشاءالله در کارگاههای مناسب در اختیار همکاران قرار خواهد گرفت ولی موارد سادهای مانند پیادهسازی امکان لغو یک کار از درون پنجره مدیریت کارها براحتی و بدون هیچگونه برنامهنویسی قابل پیادهسازی است.
موفق باشید.