یکی از امکانات سیستم مدیریت فرایندهای نوسا امکان اطلاع رسانی به ذینفعان فرایند از طریق ارسال اعلامیه است. ارسال اعلامیه های اطلاع رسانی به دو روش انجام می شود: 1- پیام کوتاه (SMS) 2- پست الکترونیک (Email)
پروسه چند مرحله ای اطلاع رسانی (تولید و ارسال اعلامیه ها)
اطلاع رسانی از طریق اعلامیه ها در چهار مرحله کاملا مستقل انجام می شود. طرح شماتیک پروسه اطلاع رسانی را در شکل زیر مشاهده می کنید:

ملاحظه می کنید که در مرحله اول اعلامیه ها با روشهای مختلف تولید می شود و سپس در مرحله دوم در محاوره اعلامیه های تولید شده مدیریت (تکمیل، اصلاح، ارسال مجدد، حذف، لغو و ...) می شود. در مرحله سوم اعلامیه ها به سامانه های ارسال پیامک (SMS Panel) یا سرویس دهنده های پست الکترونیک (SMTP Server) ارسال می شود. این سه مرحله در سیستم مدیریت فرایندها انجام می شود و انجام صحیح مرحله سوم به معنی موفق بودن پروسه اطلاع رسانی است. به عبارت دیگر ارسال موفق در سیستم مدیریت فرایندها به معنی تحویل صحیح اعلامیه ها به سامانه های ارسال پیام است. توجه کنید که مرحله چهارم بعنی ارسال از سامانه های ارسال پیام به گیرنده ها بطور کلی از نظارت و کنترل سیستم مدیریت فرایندها خارج است
نکته مهم: با توجه به مطالب بالا، ارسال موفق در سیستم مدیریت فرایندها تضمینی برای تحویل اعلامیه به گیرنده نیست.
در ادامه مطلب به مرحله 1 یعنی روشهای تولید اعلامیه ها می پردازیم:
روشهای تولید اعلامیه ها
در این سیستم، اعلامیه ها به دو روش تولید می شود:
1-روش دستی از طریق رابط کاربری سیستم مدیریت فرایندها: در این روش کاربر تصمیم می گیرد که در شرایط خاصی، اعلامیه های مورد نظر خود را به شکل دستی تولید نماید. در واقع این روش را می توان کاربر محور نامید. ارسال دستی، خود به دو شکل انجام می شود: 1- اطلاع رسانی داخلی از طریق صندوق پیام و 2- اطلاع رسانی در محاوره «اعلامیه های تولید شده در گردش کار»
2- روش سیستمی از طریق برنامه گردش کار: در این روش، سیستم به شکل خودکار و بر مبنای منطق تجاری (Business Logic) اعلامیه ها را تولید می کند. این کار با استفاده از متد CreateNotification در برنامه گردش کار انجام می شود.
در ادامه مطلب، روشهای فوق به تفصیل شرح داده می شود.
1-تولید دستی اعلامیه ها از طریق رابط کاربری
همانطور که گفته شد تولید اعلامیه ها در روش دستی به دو شکل انجام می شود:
- تولید اعلامیه های داخلی از طریق صندوق پیام
در این روش، کاربران می توانند از طریق صندوق پیام، به یک یا چند کاربر سیستم مدیریت فرایندها اعلامیه های مورد نظر خود را تولید و ارسال کنند. در واقع علت اطلاق صفت «داخلی» به این روش این است که گیرنده های اعلامیه ها، کاربران سیستم مدیریت فرایندها هستند و در لیست «کاربران و امکانات آنها » قابل مشاهده هستند.
توضیح: این روش قبلا و در یک مطلب آموزشی با عنوان پیام رسانی درون سازمانی در مدیریت فرایندها: 1- صندوق پیام در کلاینت ویندوز شرح داده شده است که برای اطلاعات بیشتر می توانید به مطلب یاد شده مراجعه کنید.
- تولید اعلامیه های عمومی در محاوره اعلامیه های تولید شده
در این روش، گیرنده های اعلامیه ها محدود به کاربران سیستم نیستند و امکان ارسال اعلامیه به هر شماره موبایلی وجود دارد. توجه کنید که در گردش کارها ذینفعانی وجود دارند که به عنوان کاربر در پایگاه ثبت نشده اند. برای مثال راننده ها در گردش کار تامین کالاها ذینفع هستند اما به عنوان کاربر در سیستم تعریف نشده اند. در هر صورت از این طریق افزون بر کاربران سیستم، امکان تولید و ارسال اعلامیه به این دسته از ذینفعان نیز وجود دارد.
تولید یک اعلامیه دستی
برای این کار، مطابق شکل زیر از منوی «طراحی گردش کار» گزینه «اعلامیه های تولیدشده در گردش کار» را کلیک کنید:

به این ترتیب، محاوره اعلامیه های تولید شده به شکل زیر روی صفحه باز می شود:

در بخشهای قبلی به چند مرحله ای بودن پروسه ارسال اعلامیه ها اشاره شد. کارکرد اصلی محاوره اعلامیه های تولید شده، در واقع مدیریت اعلامیه هایی است که در مرحله اول تولید شده اند، در واقع تولید دستی اعلامیه تنها یکی از امکانات این محاوره است و لذا امکاناتی برای فیلترینگ و محدود کردن فهرست اعلامیه های تولید شده وجود دارد که در شکل بالا ملاحظه می کنید، البته این امکانات در بخشهای بعدی به تفصیل شرح داده شده است و چون در هدف جاری ما (تولید دستی اعلامیه) موضوعیت ندارد محاوره بالا را بدون تنظیمات خاصی تصویب می کنیم تا وارد محاوره اعلامیه های تولید شده در گردش کار شویم:

در این محاوره برای تولید یک اعلامیه دستی کافی است آیکون
را کلیک کنید تا محاوره «ارسال اعلامیه دستی» به شکل زیر باز شود:

تنظیمات موجود در این صفحه به شرح زیر است:
شیوه اطلاع رسانی: در این قسمت بسته به نوع اعلامیه ها (پیام کوتاه یا پست الکترونیک) یکی از شیوه های اطلاع رسانی را انتخاب می کنیم.
شماره تلفن گیرنده: اگر شیوه اطلاع رسانی از نوع پیام کوتاه را انتخاب کنیم این ناحیه فعال می شود که باید شماره تلفن همراه گیرنده را در این قسمت وارد کنیم.
نشانی پست الکترونیک گیرنده: اگر شیوه اطلاع رسانی از نوع پست الکترونیک باشد آنگاه در ای قسمت آدرس ایمیل گیرنده را وارد می کنیم.
CC: اگر می خواهید یک رونوشت از ایمیل را به گیرنده های دیگری نیز ارسال کنید، آدرس گیرنده های مورد نظر را در این قسمت وارد کنید.
BCC: این قسمت مشابه با CC است با این تفاوت که آدرس گیرنده ها مخفی می ماند و گیرنده های دیگر از وجود آن مطلع نمی شوند.
متن پیام: متن پیام مورد نظر خود را در این قسمت وارد کنید.
یادداشت: هر یادداشتی را که لازم می دانید در این قسمت وارد کنید.
شناسه گروه: برای دسته بندی اعلامیه ها می توانید از شناسه گروه استفاده کنید. برای مثال فرض کنید در یک مرکز ماهیت اعلامیه ها به سه نوع است: 1- اعلام سررسید قرارداد 2- اعلام ثبت نام شرکت کنندگان در همایش و 3- اعلام بروزرسانی محصولات. حال می توانیم برای هر دسته از این اعلامیه ها یک شناسه گروه تعریف کنیم و از ان در مدیریت و پردازش اعلامیه ها استفاده کنیم.
توضیح: شناسه گروه بیشتر در ارسال سیستمی و گروهی اعلامیه ها کاربرد دارد که در مدیریت و دسته بندی اعلامیه ها کاربرد پیدا می کند. این مفهوم در مطلب مدیریت اعلامیه های تولید شده بیشتر توضیح داده خواهد شد.
اطلاعات تکمیلی گیرنده: در این قسمت برای توصیف و شناسایی بهتر اعلامیه ها می توانید اطلاعات تکمیلی دیگری را به اعلامیه اضافه کنید. این اطلاعات شامل کد و نام گیرنده است:
کد: در اینجا کد گیرنده را وارد کنید.
نام: در اینجا نام گیرنده را وارد کنید.
مثال:

پیوست کردن فایل به اعلامیه های دستی
بخشی دیگر از محاوره اعلامیه های تولید شده، به پیوست (Attachment) فایلها به اعلامیه ها اختصاص دارد. این بخش را در شکل زیر ملاحظه می کنید:

در این بخش، می توانید یک یا چند فایل را به اعلامیه های از نوع ایمیل پیوست کنید.
2-ارسال سیستمی اعلامیه ها از طریق برنامه گردش کار
در این روش برای تولید اعلامیه ها از متد CreateNotification از موجود WorkNotifUtils استفاده می کنیم. در ابتدا بهتر است با ساختار موجود WorkNotifUtils آشنا شویم. این موجود دارای سه متد به شرح زیر است:
WorkNotifUtils = {
function CreateNotification(informServiceCode, rcvNumOrAddr,
messageText, attachments, workKey, note,
rcvCode, rcvName, groupID, rcvCC, rcvBCC): Number
function GetNotificationStatus(notificationKey): Number
function CancelNotification(notificationKey)
}
همانطور که ملاحظه می کنید این موجود دارای سه متد (تابع) است:
CreateNotification: این تابع برای تولید اعلامیه است.
GetNotificationStatus: این تابع وضعیت جاری یک اعلامیه را باز می گرداند.
CancelNotification: این تابع یک اعلامیه خاص را لغو می کند.
در ادامه مطلب، این توابع به ترتیب شرح داده می شود:
2-1. تابع تولید اعلامیه (CreateNotification)
فرمت این تابع به شکل زیر است:
function CreateNotification(informServiceCode, rcvNumOrAddr,
messageText, attachments, workKey, note,
rcvCode, rcvName, groupID, rcvCC, rcvBCC): Number
پارامترهای این تابع به شرح زیر است:
informServiceCode: کد شیوه اطلاع رسانی
rcvNumOrAddr: شماره تلفن همراه (برای اعلامیه های از نوع پیامک) و یا آدرس ایمیل (برای اعلامیه های از نوع پست الکترونیک)
messageText: متن پیام ارسالی
attachments: منابع دیجیتال پیوست، به این صورت که:
- اگر عدد وارد شود فرض می شود کلید منبع دیجیتال است .
- اگر رشته حرفی وارد شود، فرض می شود کد منبع دیجیتال است.
- اگر تعداد پیوستها بیش از یک منبع باشد آنگاه می توانیم در اینجا یک آرایه را وارد کنیم که عناصر آرایه باید یا عدد (متناظر با کلید منبع دیجیتال) و یا رشته حرفی (متناظر با کد منبع دیجیتال) باشد.
workKey: کلید کار ارسال کننده اعلامیه در این پارامتر وارد می شود.
note: هر یادداشت دلخواه برای اعلامیه (اختیاری است)
rcvCode: کد گیرنده، که جزئی از اطلاعات تکمیلی اعلامیه است (اختیاری است)
rcvName: نام گیرنده اعلامیه، این هم جزئی از اطلاعات تکمیلی اعلامیه است که برای توصیف بهتر اعلامیه وارد می شود. (اختیاری است)
groupID: شناسه گروه اعلامیه هاست که برای دسته بندی اعلامیه ها استفاده می شود. (اختیاری است)
rcvCC: اطلاعات CC پست الکترونیک (اختیاری است)
rcvBCC: اطلاعات BCC پست الکترونیک (اختیاری است)
خروجی این تابع کلید اعلامیه (notificationKey) است. بنابراین هر اعلامیه دارای یک کلید اختصاصی است که در پردازشهای سیستمی (تشخیص وضعیت و لغو اعلامیه) به کار خواهد آمد.
مثالها
مثال 1: ارسال پیامک بروزرسانی به مشتریان
برای این کار می توانیم یک تابع اجرایی به شکل زیر بنویسیم:
function WorkTaskSendSMS() {
var n=WorkState.Customers.length;
var smsText=”نماینده محترم شرکت. نسخه جدید نرم افزار آماده شده است. لطفا برای بروزرسانی با شرکت تماس بگیرید”;
var infNote=”این اعلامیه برای بار دوم ارسال می شود”;
var claccID=”اعلام بروزرسانی”;
for (i=0; i
var smsNum=WorkState.Customers.phoneNumber;
var custCode= WorkState.Customers.customerCode;
var custName= WorkState.Customers.customerName;
WorkNotifUtils.CreateNotification (2, smsNum, smsText, “”, WorkState.WorkKey, infNote, custCode, custName, classID );
}
}
در این مثال ساده، یک پیامک با متن ثابت به مشتریان ارسال می شود. در اینجا اطلاعات مشتریان از جمله کد، نام و شماره تلفن همراه در یک آرایه بنام Customers موجود است و لذا با یک حلفه for روی این آرایه، پیامکهای مورد نظر به شماره همراه نمایندگان مشتریان ارسال می شود.
مثال 2: ارسال گواهی شرکت در همایش به ایمیل مشتریان
تابع اجرایی نمونه برای تولید این اعلامیه به شکل زیر است:
function WorkTaskSendInvoice() {
var n=WorkState.Customers.length;
var mailText=”نماینده محترم شرکت. گواهی شرکت در همایش به پیوست ارسال می گردد”;
var claccID=”گواهی همایش”;
for (i=0; i
var mailAddr=WorkState.Customers.emailAddress;
var mailCC= WorkState.Customers.emalCC;
var maiAttachment=WorkState.Customers.seminarCertificate;
var custCode= WorkState.Customers.customerCode;
var custName= WorkState.Customers.customerName;
WorkNotifUtils.CreateNotification (3, mailAddr, mailText, mailAttachment, WorkState.WorkKey, “”,custCode, custName, mailCC);
}
}
در این مثال، اطلاعات آدرس ایمیل مشتری، CC و تصویرگواهی همایش در آرایه Customers ذخیره شده است. توضیح این که گواهی همایش در فیلد Customers.seminarCertificate که از نوع منبع دیجیتال است ذخیره شده است.