فرض کنید هیئتمدیرهٔ یک صندوق تصمیم میگیرد وامهای بالاتر از سقف معینی، پیش از پرداخت، به تأیید کمیتهٔ اعتباری هم برسند. در بسیاری از سامانهها همین تصمیم ساده به یک درخواست تغییر تبدیل میشود. برنامهنویس باید منطق فرایند را در چند سرویس پیدا و اصلاح کند، نسخهٔ تازه آزمون شود و برای انتشارش نوبت گرفته شود. در این فاصله واحد اعتبارات یا مرحلهٔ تازه را بیرون از سامانه و با نامه و امضا اجرا میکند، یا منتظر میماند.
در دارا همین تغییر در طراح فرایند انجام میشود و با انتشار نسخهٔ تازهای از فرایند فعال میشود. در ادامه توضیح میدهیم این کار چطور ممکن است و چه ملاحظاتی پشت آن است.
فرایند کجا نگه داشته میشود
در دارا کارهای تخصصی هر دامنه، مثل محاسبهٔ اقساط یا ثبت مسدودی روی سپرده، در ماژول همان دامنه انجام میشود. اما ترتیب کارها، یعنی اینکه پرونده بعد از هر گام به کدام گام برود، در موتور فرایند نگه داشته میشود. گراف هر فرایند، شامل گامها، شرطها، کارتابلها و مهلتها، بهصورت داده ذخیره میشود و مثل هر دادهٔ دیگری نسخه دارد.
هر نسخه یکی از سه وضعیت پیشنویس، منتشرشده یا بایگانی را دارد. تحلیلگر فرایند در طراح، از روی نسخهٔ فعلی فرایند تسهیلات یک پیشنویس میسازد و گام «تأیید کمیتهٔ اعتباری» را با شرط مبلغ به آن اضافه میکند. گراف پیش از انتشار اعتبارسنجی میشود تا گامی بیخروجی یا مسیری ناتمام در آن نماند. انتشار نسخهٔ تازه یک فراخوانی است و هیچ سرویسی دوباره مستقر نمیشود.
پروندههایی که در جریاناند
بیشترین نگرانی واحدهای عملیاتی از تغییر فرایند همینجاست. در دارا هر پرونده به نسخهای که با آن شروع شده قفل است. درخواستی که دیروز ثبت شده با همان مسیر دیروز تا پایان جلو میرود و درخواستهای امروز از نسخهٔ تازه پیروی میکنند. هیچ پروندهای وسط راه با گامی روبهرو نمیشود که هنگام شروعش وجود نداشته است.
اگر سازمان بخواهد قاعدهٔ تازه برای پروندههای باز هم اجرا شود، این تصمیمی جداگانه است که باید آگاهانه گرفته شود و خودبهخود با انتشار نسخه اتفاق نمیافتد.
کارتابل و مهلتها
گام «تأیید کمیته» یک کار انسانی است. کار انسانی در موتور دارا یک ردیف واقعی با نقش مقصد است و میتواند به محدودهٔ جغرافیایی، مثلاً یک استان، محدود شود. کارشناس کار را تحویل میگیرد و آن را تکمیل میکند، برمیگرداند یا به همکار دیگری ارجاع میدهد. همهٔ این گذارها در سابقهٔ پرونده میماند.
برای هر گام میتوان مهلت و یادآوری گذاشت. تایمرها پایدارند و در پایگاهداده نگه داشته میشوند؛ اگر سرویس در میانهٔ مهلت یک کار دوباره راهاندازی شود، مهلت از همانجا ادامه پیدا میکند و یادآوری جا نمیافتد.
وقتی چند ماژول همزمان پاسخ میدهند
فرایند تسهیلات فقط گام انسانی ندارد. بررسی وثیقه، گرفتن امتیاز متقاضی و ثبت مسدودی روی سپرده کارهایی است که ماژولهای دیگر انجام میدهند و نتیجهاش را به موتور برمیگردانند. گاهی این پاسخها تقریباً همزمان میرسند.
هر پیشروی در موتور داخل یک تراکنش انجام میشود که نخستین کارش گرفتن قفل همان پرونده است. پاسخهای همزمان پشت این قفل صف میشوند و هر کدام پرونده را از جایی برمیدارند که قبلی گذاشته است. پرونده در وضعیت نیمهکاره یا دوگانه نمیماند و وضعیت فعلیاش را همیشه میتوان با یک پرسوجوی ساده خواند.
رویدادهایی که موتور منتشر میکند، مثل «درخواست تأیید شد»، در همان تراکنش تغییر وضعیت نوشته میشوند. یا هر دو ثبت میشوند یا هیچکدام. تحویل رویداد به گیرندهها جداگانه و با امضای HMAC انجام میشود و اگر گیرنده در دسترس نباشد، تحویل با فاصلهای که هر بار بیشتر میشود دوباره امتحان میشود.
طراح فرایند
موتور هجده نوع نود دارد؛ از کار انسانی و تایمر تا فراخوانی سامانههای بیرونی. تحلیلگر فرایند گراف را در طراح بصری میکشد، برای هر کار انسانی نقش و مهلت تعیین میکند و پیش از انتشار، خطاهای گراف را همانجا میبیند.
آنچه همچنان کار تیم فنی است
نسخهدار بودن فرایند به این معنا نیست که هیچ تغییری به برنامهنویس نیاز ندارد. اگر گام تازه محاسبهای بخواهد که امروز هیچ ماژولی انجام نمیدهد، آن محاسبه باید در ماژول مربوط ساخته شود. اما جابهجا کردن گامها، افزودن یا حذف یک تأیید، عوض کردن نقش مقصد یک کار و تغییر مهلتها در طراح انجام میشود، و بیشتر درخواستهای تغییر در واحدهای عملیاتی معمولاً از همین جنساند.
- #موتور_فرایند
- #کارتابل
- #نسخهبندی
- #تسهیلات



