گردشکارها و وضعیتها
وضعیت سند
آماده بازبینی محصول — استخراجشده از سناریوهای SET-01 تا SET-06، MEM-01 تا MEM-05 و User Flowهای OBM-UF-01 تا OBM-UF-12.
۱. هدف و مرزبندی
این سند چرخه عمر موجودیتها، Transitionهای مجاز، فرایندهای Async و هماهنگی میان Actorها و سامانهها را تعریف میکند.
- مسیر قابل مشاهده یک کاربر در سند «جریانهای کاربر» قرار دارد.
- ساختار موجودیتها و روابط آنها متعلق به Domain Model است.
- جزئیات Permissionها در سند «دسترسیها» تعریف میشوند.
- متن و زمان اعلانها در سند «اعلانها» تعریف میشوند.
- چیدمان صفحه یا کنترل رابط کاربری در این سند تعریف نمیشود.
۲. اصل تفکیک وضعیتها
وضعیتهایی که مستقل از هم تغییر میکنند نباید در یک State Machine ادغام شوند.
بهطور مشخص:
- وضعیت Invitation Envelope از وضعیت Delivery پیامک مستقل است.
- وضعیت Delivery Attempt از وضعیت Batch مستقل است.
- وضعیت پذیرش Role از Membership عملیاتی مستقل است.
- Account Link از Unit Relationship مستقل است.
- Payment از Provisioning ساختمان مستقل است.
- وضعیت هر بخش Setup از وضعیت کلی ساختمان مستقل است.
در نتیجه، «پیامک ارسال شد» به معنی «Role پذیرفته شد» یا «Membership ایجاد شد» نیست.
۳. فهرست Workflowها
| شناسه |
عنوان |
نوع |
موجودیت یا فرایند اصلی |
مرجع |
OBM-WF-01 |
چرخه درخواست راهاندازی |
State Machine |
Setup Request |
SET-01 تا SET-04 |
OBM-WF-02 |
چرخه پرداخت |
State Machine |
Payment |
SET-04 |
OBM-WF-03 |
ایجاد ساختمان پس از پرداخت |
State + Sequence |
Provisioning Job |
SET-05 |
OBM-WF-04 |
وضعیت بخشهای راهاندازی |
State Machine |
Setup Section |
SET-06 |
OBM-WF-05 |
ورود اطلاعات با Excel |
State Machine |
Import Attempt |
SET-06A |
OBM-WF-06 |
فعالسازی امکانات |
State Machine |
Facility |
SET-06E |
OBM-WF-07 |
چرخه Invitation Envelope |
State Machine |
Invitation Envelope |
MEM-01، MEM-03 |
OBM-WF-08 |
ارسال و تحویل پیامک دعوت |
State Machine |
Delivery Attempt و Batch |
MEM-01، MEM-03 |
OBM-WF-09 |
پذیرش و فعالسازی Role |
State Machine |
Role Assignment |
MEM-01، MEM-02 |
OBM-WF-10 |
پایان و جایگزینی رابطه |
State + Orchestration |
Unit Relationship یا Role Assignment |
MEM-04 |
OBM-WF-11 |
بررسی تغییر مدیر راهاندازی |
State Machine |
Support Ticket |
MEM-05 |
OBM-WF-12 |
جابهجایی اتمیک مدیر راهاندازی |
Sequence |
Role Assignmentها |
MEM-05 |
OBM-WF-13 |
ثبت و تأیید قبض واریز بانکی |
State Machine |
Manual Payment Receipt |
SET-06D |
۴. قواعد سراسری
۴.۱. Idempotency
- هر Payment Request شناسه یکتا دارد.
- هر پرداخت موفق حداکثر یک ساختمان ایجاد میکند.
- Callback تکراری نتیجه ثبتشده قبلی را برمیگرداند.
- Retry ایجاد ساختمان نباید Building، Subscription، Membership یا Role تکراری بسازد.
- Retry دعوت باید از Envelope موجود استفاده کند.
- Retry Import نباید داده ناقص یا رکورد تکراری ایجاد کند.
۴.۲. Audit
این رویدادها حداقل Audit میشوند:
- ایجاد و تغییر Setup Request
- ایجاد Payment و نتیجه اعتبارسنجی آن
- ایجاد و فعالشدن ساختمان
- تخصیص Role به خود مدیر راهاندازی
- تغییر Role Template و Permission حساس
- ایجاد، ویرایش، ارسال مجدد و لغو Invitation
- پذیرش یا رد Role حساس
- ارسال، تأیید یا رد قبض واریز بانکی و اثر آن بر Unit Ledger
- پایان و جایگزینی رابطه یا Role
- تعلیق یا تغییر مدیر راهاندازی
۴.۳. اعلان بهعنوان Side Effect
شکست ارسال SMS یا اعلان، Transition اصلی موجودیت را Rollback نمیکند؛ مگر Business Rule همان Workflow صریحاً ارسال موفق را شرط ادامه قرار داده باشد.
۵. OBM-WF-01 — چرخه درخواست راهاندازی
شناسنامه
- موجودیت: Setup Request
- شروع: انتخاب «ثبت ساختمان جدید»
- پایان موفق: پرداخت معتبر به درخواست متصل شده است
- پایان بدون خرید: درخواست پیش از پرداخت رها یا لغو شده است
- User Flow مرجع:
OBM-UF-01
وضعیتها
| کد |
عنوان |
تعریف |
DRAFT |
پیشنویس |
درخواست ایجاد شده اما اطلاعات پایه کامل نیست |
BASE_INFO_COMPLETED |
اطلاعات پایه کامل |
نام و تعداد معتبر واحدها ثبت شدهاند |
QUOTED |
قیمتگذاریشده |
دوره و محاسبات معتبر ثبت شدهاند |
PAYMENT_IN_PROGRESS |
پرداخت در جریان |
Payment Request برای آخرین قیمت معتبر ایجاد شده است |
PAID |
پرداختشده |
پرداخت معتبر و موفق به درخواست متصل است |
CANCELED |
لغوشده |
ادامه درخواست پیش از پرداخت متوقف شده است |
stateDiagram-v2
accTitle: چرخه درخواست راهاندازی ساختمان
accDescr: درخواست از پیشنویس به اطلاعات کامل، قیمتگذاری، پرداخت و وضعیت پرداختشده میرود
state "پیشنویس" as DRAFT
state "اطلاعات پایه کامل" as BASE_INFO_COMPLETED
state "قیمتگذاریشده" as QUOTED
state "پرداخت در جریان" as PAYMENT_IN_PROGRESS
state "پرداختشده" as PAID
state "لغوشده" as CANCELED
[*] --> DRAFT
DRAFT --> BASE_INFO_COMPLETED: ثبت نام و حداقل ۲ واحد
BASE_INFO_COMPLETED --> DRAFT: ناقص یا نامعتبرشدن اطلاعات
BASE_INFO_COMPLETED --> QUOTED: انتخاب دوره و ثبت قیمت
QUOTED --> BASE_INFO_COMPLETED: تغییر تعداد واحدها
QUOTED --> PAYMENT_IN_PROGRESS: ایجاد Payment Request
PAYMENT_IN_PROGRESS --> QUOTED: لغو یا شکست پرداخت
PAYMENT_IN_PROGRESS --> PAID: اتصال پرداخت معتبر
DRAFT --> CANCELED: لغو درخواست
BASE_INFO_COMPLETED --> CANCELED: لغو درخواست
QUOTED --> CANCELED: لغو درخواست
PAID --> [*]
CANCELED --> [*]
Transitionهای کلیدی
| از |
Event |
Guard |
به |
Side Effect |
DRAFT |
ثبت اطلاعات پایه |
مجموع واحدها حداقل ۲ است |
BASE_INFO_COMPLETED |
ذخیره آخرین اطلاعات معتبر |
BASE_INFO_COMPLETED |
ثبت قیمت |
تعرفه معتبر موجود است |
QUOTED |
ثبت دوره، تخفیف و شارژ اولیه پیامک |
QUOTED |
شروع پرداخت |
قیمت همچنان معتبر است |
PAYMENT_IN_PROGRESS |
ایجاد Payment یکتا |
PAYMENT_IN_PROGRESS |
پرداخت معتبر |
مبلغ و درخواست منطبقاند |
PAID |
آغاز OBM-WF-03 |
Transitionهای ممنوع
DRAFT مستقیم به PAID
QUOTED مستقیم به ایجاد ساختمان
- تغییر اطلاعات قیمتگذاری پس از
PAID در همان درخواست
۶. OBM-WF-02 — چرخه پرداخت
وضعیتها
| کد |
عنوان |
نوع |
CREATED |
ایجادشده |
پایدار کوتاهمدت |
REDIRECTED |
منتقلشده به درگاه |
موقت |
VERIFYING |
در حال اعتبارسنجی |
موقت |
UNDER_REVIEW |
در حال بررسی |
پایدار موقت |
SUCCEEDED |
موفق |
پایانی |
FAILED |
ناموفق |
پایانی برای همان تلاش |
CANCELED |
لغوشده توسط کاربر |
پایانی برای همان تلاش |
AMOUNT_MISMATCH |
مغایرت مبلغ |
خطای پایانی و نیازمند بررسی |
stateDiagram-v2
accTitle: چرخه وضعیت پرداخت
accDescr: پرداخت از ایجاد و انتقال به درگاه به اعتبارسنجی و نتیجه موفق، ناموفق، لغو یا بررسی میرود
state "ایجادشده" as CREATED
state "منتقلشده به درگاه" as REDIRECTED
state "در حال اعتبارسنجی" as VERIFYING
state "در حال بررسی" as UNDER_REVIEW
state "موفق" as SUCCEEDED
state "ناموفق" as FAILED
state "لغوشده" as CANCELED
state "مغایرت مبلغ" as AMOUNT_MISMATCH
[*] --> CREATED
CREATED --> REDIRECTED: انتقال کاربر
CREATED --> FAILED: ایجاد یا انتقال ناموفق
REDIRECTED --> VERIFYING: بازگشت یا Callback
REDIRECTED --> CANCELED: لغو در درگاه
VERIFYING --> SUCCEEDED: نتیجه معتبر و مبلغ منطبق
VERIFYING --> FAILED: نتیجه قطعی ناموفق
VERIFYING --> UNDER_REVIEW: نتیجه نامشخص یا سرویس خارج از دسترس
VERIFYING --> AMOUNT_MISMATCH: مبلغ نامنطبق
UNDER_REVIEW --> VERIFYING: بررسی مجدد
SUCCEEDED --> [*]
FAILED --> [*]
CANCELED --> [*]
AMOUNT_MISMATCH --> [*]
قواعد Workflow
- بازگشت کاربر از درگاه اثبات موفقیت نیست.
- فقط اعتبارسنجی مستقیم سرویس پرداخت میتواند
SUCCEEDED ایجاد کند.
- Callback تکراری روی
SUCCEEDED نتیجه قبلی را برمیگرداند و Side Effect را تکرار نمیکند.
UNDER_REVIEW نه موفق و نه ناموفق است.
- تلاش مجدد کاربر Payment جدید میسازد، اما Setup Request قبلی را حفظ میکند.
۷. OBM-WF-03 — ایجاد ساختمان پس از پرداخت
وضعیتهای Provisioning Job
| کد |
عنوان |
تعریف |
PENDING |
در انتظار |
پرداخت معتبر ثبت شده و Job هنوز آغاز نشده است |
IN_PROGRESS |
در حال اجرا |
اجزای ضروری در حال ایجاد هستند |
RETRYING |
تلاش مجدد |
بخشی از عملیات داخلی شکست خورده و Retry امن در جریان است |
ACTIVE |
فعال |
همه اجزای ضروری ایجاد و ساختمان قابل استفاده است |
stateDiagram-v2
accTitle: چرخه ایجاد ساختمان پس از پرداخت
accDescr: Job پس از پرداخت معتبر آغاز میشود و تا ایجاد کامل ساختمان، اشتراک، عضویت و نقش مدیر ادامه دارد
state "در انتظار" as PENDING
state "در حال اجرا" as IN_PROGRESS
state "تلاش مجدد" as RETRYING
state "ساختمان فعال" as ACTIVE
[*] --> PENDING: پرداخت معتبر
PENDING --> IN_PROGRESS: شروع Job
IN_PROGRESS --> ACTIVE: تکمیل همه اجزای ضروری
IN_PROGRESS --> RETRYING: شکست داخلی
RETRYING --> IN_PROGRESS: Retry امن
ACTIVE --> [*]
توالی ایجاد
sequenceDiagram
accTitle: توالی ایجاد ساختمان پس از پرداخت
accDescr: تریپیلون پس از اعتبارسنجی پرداخت، ساختمان و اجزای ضروری را بدون ایجاد رکورد تکراری فعال میکند
autonumber
actor User as متقاضی
participant Pay as سرویس پرداخت
participant App as تریپیلون
participant Provision as سرویس راهاندازی
Pay-->>App: پرداخت معتبر و یکتا
App-->>User: نمایش «در حال راهاندازی»
App->>Provision: شروع با شناسه پرداخت
critical ایجاد اجزای ضروری
Provision->>Provision: کنترل عدم ایجاد ساختمان قبلی
Provision->>Provision: ایجاد ساختمان و اشتراک
Provision->>Provision: ایجاد Membership مدیر راهاندازی
Provision->>Provision: تخصیص Role مدیر راهاندازی
Provision->>Provision: تعیین Current Context و Setup Dashboard
option شکست داخلی
Provision->>Provision: حفظ پرداخت و Retry بدون رکورد تکراری
end
Provision-->>App: ساختمان فعال
App-->>User: ورود به صفحه اصلی ساختمان
Invariantها
- یک Payment موفق حداکثر یک Building و یک Subscription اولیه دارد.
- ساختمان پیش از تکمیل Membership و Role مدیر راهاندازی قابل استفاده اعلام نمیشود.
- در خطای داخلی، کاربر دوباره پرداخت نمیکند.
- تاریخ شروع اشتراک در خطای داخلی به زمان فعالشدن واقعی منتقل میشود.
۸. OBM-WF-04 — وضعیت بخشهای راهاندازی
وضعیتها
| کد |
عنوان |
معیار |
NOT_STARTED |
شروع نشده |
هیچ تصمیم یا داده معتبری ثبت نشده است |
IN_PROGRESS |
در حال تکمیل |
بخشی از داده ثبت شده، اما معیار تکمیل برقرار نیست |
COMPLETED |
تکمیلشده |
معیار کامل بخش برقرار است |
NOT_APPLICABLE |
در این ساختمان وجود ندارد |
نبود کارکنان یا امکانات صریحاً ثبت شده است |
DEFERRED |
فعلاً تکمیلشده |
مدیر آگاهانه ادامه را به بعد موکول کرده است |
stateDiagram-v2
accTitle: چرخه وضعیت هر بخش راهاندازی
accDescr: هر بخش از شروعنشده به در حال تکمیل و سپس یکی از پایانهای تکمیل، نامرتبط یا موکولشده میرود
state "شروع نشده" as NOT_STARTED
state "در حال تکمیل" as IN_PROGRESS
state "تکمیلشده" as COMPLETED
state "در این ساختمان وجود ندارد" as NOT_APPLICABLE
state "فعلاً تکمیلشده" as DEFERRED
[*] --> NOT_STARTED
NOT_STARTED --> IN_PROGRESS: ثبت اولین داده یا تصمیم ناقص
NOT_STARTED --> NOT_APPLICABLE: ثبت نبود قابلیت
NOT_STARTED --> DEFERRED: انتخاب «بعداً»
IN_PROGRESS --> COMPLETED: برقراری معیار تکمیل
IN_PROGRESS --> NOT_APPLICABLE: ثبت نبود قابلیت
IN_PROGRESS --> DEFERRED: موکولکردن ادامه
COMPLETED --> IN_PROGRESS: تغییر داده و نقض معیار تکمیل
NOT_APPLICABLE --> IN_PROGRESS: افزودن قابلیت
DEFERRED --> IN_PROGRESS: ادامه تنظیمات
قواعد محاسبه پیشرفت
- وضعیت هر بخش مستقل محاسبه میشود.
COMPLETED، NOT_APPLICABLE و DEFERRED برای شمارش «بخش حلشده» محسوب میشوند.
DEFERRED به معنی فعالبودن قابلیت وابسته نیست.
- تغییر دادهای که معیار تکمیل را نقض کند، بخش را به
IN_PROGRESS بازمیگرداند.
- تکمیل همه بخشها بر تاریخ شروع اشتراک اثر ندارد.
۹. OBM-WF-05 — ورود اطلاعات با Excel
وضعیتها
| کد |
عنوان |
UPLOADED |
بارگذاریشده |
VALIDATING |
در حال اعتبارسنجی |
BLOCKED |
متوقف بهعلت خطای مسدودکننده |
READY_FOR_CONFIRMATION |
آماده تأیید |
IMPORTING |
در حال ثبت |
COMPLETED |
تکمیلشده |
FAILED |
شکست ثبت نهایی |
stateDiagram-v2
accTitle: چرخه ورود واحدها و ساکنان با Excel
accDescr: فایل بارگذاری و اعتبارسنجی میشود و فقط پس از نبود خطای مسدودکننده و تأیید مدیر ثبت میشود
state "بارگذاریشده" as UPLOADED
state "در حال اعتبارسنجی" as VALIDATING
state "متوقف با خطای مسدودکننده" as BLOCKED
state "آماده تأیید" as READY_FOR_CONFIRMATION
state "در حال ثبت" as IMPORTING
state "تکمیلشده" as COMPLETED
state "شکست ثبت نهایی" as FAILED
[*] --> UPLOADED
UPLOADED --> VALIDATING: شروع اعتبارسنجی
VALIDATING --> BLOCKED: وجود خطای مسدودکننده
VALIDATING --> READY_FOR_CONFIRMATION: نبود خطای مسدودکننده
BLOCKED --> [*]: پایان این Attempt
READY_FOR_CONFIRMATION --> IMPORTING: تأیید مدیر
IMPORTING --> COMPLETED: ثبت یکپارچه موفق
IMPORTING --> FAILED: شکست ثبت
FAILED --> IMPORTING: Retry امن
COMPLETED --> [*]
Invariantها
- هر Upload جدید Import Attempt جدید میسازد.
- Warning مانع
READY_FOR_CONFIRMATION نیست.
- خطای مسدودکننده هیچ داده نهایی ایجاد نمیکند.
- Import نهایی All-or-Nothing است.
- Import موفق Invitation یا SMS ایجاد نمیکند.
۱۰. OBM-WF-06 — فعالسازی امکانات
وضعیتهای قطعی نسخه فعلی
| کد |
عنوان |
تعریف |
DRAFT |
پیشنویس |
امکان ایجاد شده اما حداقل قواعد کامل یا تأیید نشدهاند |
ACTIVE |
فعال |
حداقل قواعد معتبرند و مدیر فعالسازی را تأیید کرده است |
stateDiagram-v2
accTitle: چرخه فعالسازی امکان ساختمان
accDescr: امکان ابتدا در پیشنویس ایجاد و پس از تکمیل قواعد و تأیید مدیر فعال میشود
state "پیشنویس" as DRAFT
state "فعال" as ACTIVE
[*] --> DRAFT: انتخاب یا ایجاد امکان
DRAFT --> DRAFT: ذخیره تنظیمات ناقص
DRAFT --> ACTIVE: تکمیل قواعد و تأیید مدیر
Guard فعالسازی
- مدل استفاده مشخص است.
- گروههای مجاز مشخصاند.
- مدل قیمتگذاری و قواعد لازم کاملاند.
- زمانبندی، ظرفیت و محدودیتهای مرتبط معتبرند.
- اگر تأیید لازم است، Role یا شخص تأییدکننده Permission معتبر دارد.
تصمیم باز
وضعیتهای غیرفعالسازی موقت، آرشیو و بازگرداندن Facility در سناریوهای فعلی تعریف نشدهاند و نباید پیش از طراحی ماژول رزرو قطعی شوند.
۱۱. OBM-WF-07 — چرخه Invitation Envelope
تصمیم مدلسازی
فهرست سناریوها وضعیتهای Envelope، Delivery و Role Acceptance را کنار هم نام برده است، اما همان سناریو استقلال آنها را الزام میکند. مدل مرجع به سه State Machine مستقل تفکیک میشود.
وضعیتهای Envelope
| کد |
عنوان |
تعریف |
DRAFT |
پیشنویس |
Envelope ساخته یا ویرایش شده، اما برای استفاده فعال نیست |
ACTIVE |
فعال |
Envelope معتبر است و میتواند برای ورود یا تصمیم Role استفاده شود |
COMPLETED |
تکمیلشده |
همه Roleهای نیازمند تصمیم تعیین تکلیف شدهاند یا فقط اتصال عادی انجام شده است |
CANCELED |
لغوشده |
مدیر استفاده بعدی از Envelope را متوقف کرده است |
stateDiagram-v2
accTitle: چرخه Invitation Envelope
accDescr: دعوتنامه از پیشنویس به فعال میرود و با تعیین تکلیف نقشها تکمیل یا توسط مدیر لغو میشود
state "پیشنویس" as DRAFT
state "فعال" as ACTIVE
state "تکمیلشده" as COMPLETED
state "لغوشده" as CANCELED
[*] --> DRAFT
DRAFT --> DRAFT: ویرایش Role یا Scope
DRAFT --> ACTIVE: تأیید برای ارسال یا استفاده
ACTIVE --> ACTIVE: Resend روی همان Envelope
ACTIVE --> COMPLETED: تعیین تکلیف همه Roleها یا اتصال عادی
DRAFT --> CANCELED: لغو مدیر
ACTIVE --> CANCELED: لغو مدیر پیش از تکمیل
COMPLETED --> [*]
CANCELED --> [*]
قواعد
- Envelope انقضای کسبوکاری ندارد.
- Resend وضعیت Envelope را تغییر نمیدهد و فقط Delivery Attempt جدید میسازد.
- ویرایش Role فعال از مسیر Envelope مجاز نیست.
- لغو Envelope، Membership، Unit Relationship یا Role فعال را حذف نمیکند.
- Role حساس لغوشده برای فعالشدن به Envelope جدید نیاز دارد.
۱۲. OBM-WF-08 — ارسال و تحویل پیامک دعوت
Delivery Attempt
| کد |
عنوان |
CREATED |
ایجادشده |
SENT |
ارسالشده |
DELIVERY_FAILED |
ارسال یا تحویل ناموفق |
stateDiagram-v2
accTitle: چرخه هر تلاش ارسال پیامک دعوت
accDescr: برای هر ارسال یا ارسال مجدد یک تلاش مستقل ایجاد و نتیجه آن موفق یا ناموفق ثبت میشود
state "ایجادشده" as CREATED
state "ارسالشده" as SENT
state "ناموفق" as DELIVERY_FAILED
[*] --> CREATED
CREATED --> SENT: پذیرش ارسال توسط سرویس پیامک
CREATED --> DELIVERY_FAILED: شکست ارسال
SENT --> [*]
DELIVERY_FAILED --> [*]
وضعیت مشتقشده Batch
| وضعیت |
قاعده |
COMPLETED |
همه گیرندگان Attempt موفق دارند |
PARTIALLY_FAILED |
حداقل یک موفق و حداقل یک ناموفق وجود دارد |
FAILED |
هیچ ارسال موفقی وجود ندارد |
NOT_SENT |
بهدلیل کمبود موجودی، Attempt آغاز نشده است |
قواعد
- کمبود موجودی پیش از شروع باعث میشود هیچ Attempt ساخته نشود.
- موفقیت بخشی Rollback نمیشود.
- Retry فقط برای گیرندگان ناموفق، Attempt جدید میسازد.
- حداقل فاصله Resend برای یک Envelope و شخص ۲۴ ساعت است.
- Delivery موفق هیچ Role را فعال نمیکند.
۱۳. OBM-WF-09 — پذیرش و فعالسازی Role
وضعیتها
| کد |
عنوان |
تعریف |
PENDING_ACCEPTANCE |
در انتظار پذیرش |
Role پیشنهاد شده اما Permission فعال ندارد |
ACTIVE |
فعال |
شخص Role را پذیرفته و Scope معتبر است |
REJECTED |
ردشده |
شخص Role را رد کرده است |
CANCELED |
لغوشده |
مدیر پیش از پذیرش، امکان پذیرش را متوقف کرده است |
INVALIDATED |
نامعتبرشده |
Role یا Scope پیش از پذیرش دیگر معتبر نیست |
ENDED |
پایانیافته |
Role فعال با Effective End Date خاتمه یافته است |
stateDiagram-v2
accTitle: چرخه پذیرش و فعالسازی نقش
accDescr: نقش حساس در انتظار پذیرش است و پس از تصمیم شخص فعال یا رد میشود و میتواند بعداً پایان یابد
state "در انتظار پذیرش" as PENDING_ACCEPTANCE
state "فعال" as ACTIVE
state "ردشده" as REJECTED
state "لغوشده" as CANCELED
state "نامعتبرشده" as INVALIDATED
state "پایانیافته" as ENDED
[*] --> PENDING_ACCEPTANCE
PENDING_ACCEPTANCE --> ACTIVE: پذیرش شخص و Scope معتبر
PENDING_ACCEPTANCE --> REJECTED: رد شخص
PENDING_ACCEPTANCE --> CANCELED: لغو مدیر
PENDING_ACCEPTANCE --> INVALIDATED: نامعتبرشدن Role یا Scope
ACTIVE --> ENDED: پایان با Effective Date
ACTIVE --> ACTIVE: تغییر Role Template ساختمان
REJECTED --> [*]
CANCELED --> [*]
INVALIDATED --> [*]
ENDED --> [*]
Invariantها
PENDING_ACCEPTANCE هیچ Permission فعالی ندارد.
- هر Role داخل Envelope مستقل پذیرفته یا رد میشود.
- رد Role، Membership و Unit Relationship را تغییر نمیدهد.
- تغییر Role Template بر Roleهای فعال همان نوع اثر دارد، اما State آنها را تغییر نمیدهد.
۱۴. OBM-WF-10 — پایان و جایگزینی رابطه
چرخه رابطه
| کد |
عنوان |
تعریف |
ACTIVE |
فعال |
رابطه در تاریخ جاری معتبر است |
END_SCHEDULED |
پایان برنامهریزیشده |
End Date آینده ثبت شده است |
ENDED |
پایانیافته |
Effective End Date رسیده و Scope مرتبط غیرفعال شده است |
stateDiagram-v2
accTitle: چرخه پایان رابطه شخص با واحد یا نقش
accDescr: رابطه فعال میتواند برای آینده پایانگذاری شود و در تاریخ مؤثر بدون حذف تاریخچه پایان یابد
state "فعال" as ACTIVE
state "پایان برنامهریزیشده" as END_SCHEDULED
state "پایانیافته" as ENDED
[*] --> ACTIVE
ACTIVE --> END_SCHEDULED: ثبت End Date آینده
ACTIVE --> ENDED: ثبت End Date جاری یا گذشته
END_SCHEDULED --> ACTIVE: لغو پایان پیش از تاریخ مؤثر
END_SCHEDULED --> ENDED: رسیدن Effective Date
ENDED --> [*]
Orchestration جایگزینی
sequenceDiagram
accTitle: پایان رابطه قبلی و ایجاد رابطه جایگزین
accDescr: تریپیلون وابستگیها را بررسی و پایان رابطه قبلی و ایجاد رابطه جدید را بهصورت اتمیک انجام میدهد
autonumber
actor Manager as مدیر مجاز
participant App as تریپیلون
participant Ledger as دفتر مالی واحد
participant Access as سرویس دسترسی
Manager->>App: ثبت نوع تغییر و Effective Date
App->>App: اعتبارسنجی تداخل تاریخها و روابط
alt مستأجر
App->>App: شناسایی Household وابسته
App->>Ledger: بررسی مانده Unit Ledger
else مالک
App->>Ledger: دریافت مانده و صورت بدهی
else کارکن یا سرویسکار
App->>App: بررسی Task و Shiftهای باز
end
critical پایان قبلی و ایجاد رابطه جدید
App->>App: پایان Relationship یا Role قبلی
App->>App: ایجاد Relationship یا Role جدید
App->>Access: اصلاح Scopeهای معتبر
option شکست هر بخش
App->>App: Rollback یا Retry امن
end
App-->>Manager: نتیجه نهایی و وضعیت دعوت شخص جدید
قواعد
- Person و Account حذف نمیشوند.
- پایان مستأجر، Household وابسته را با هم پایان میدهد.
- بدهی روی Unit Ledger باقی میماند.
- Task و Shift باز پیش از پایان Role کارکن تعیین تکلیف میشوند.
- پایان Scope واحد، Scopeهای نامرتبط شخص را غیرفعال نمیکند.
- Close Old و Create New باید اتمیک یا قابل بازیابی باشند.
Warning
مسئولیت مالک جاری برای مانده بدهی نیازمند تأیید حقوقی است.
۱۵. OBM-WF-11 — بررسی تغییر مدیر راهاندازی
وضعیتهای Ticket
| کد |
عنوان |
نوع |
OPEN |
باز |
شروع |
NEEDS_INFO |
نیازمند اطلاعات |
انتظار اقدام درخواستکننده |
UNDER_REVIEW |
در حال بررسی |
بررسی دستی |
APPROVED |
تأییدشده |
انتظار پذیرش مدیر پیشنهادی |
REJECTED |
ردشده |
پایانی |
COMPLETED |
تکمیلشده |
پایانی |
CANCELED |
لغوشده |
پایانی |
stateDiagram-v2
accTitle: چرخه Ticket تغییر مدیر راهاندازی
accDescr: درخواست از حالت باز به تکمیل اطلاعات و بررسی میرود و سپس تأیید، رد، تکمیل یا لغو میشود
state "باز" as OPEN
state "نیازمند اطلاعات" as NEEDS_INFO
state "در حال بررسی" as UNDER_REVIEW
state "تأییدشده" as APPROVED
state "ردشده" as REJECTED
state "تکمیلشده" as COMPLETED
state "لغوشده" as CANCELED
[*] --> OPEN
OPEN --> NEEDS_INFO: مدارک ناقص
OPEN --> UNDER_REVIEW: مدارک اولیه کامل
NEEDS_INFO --> UNDER_REVIEW: تکمیل مدارک
NEEDS_INFO --> CANCELED: لغو یا عدم ادامه
UNDER_REVIEW --> NEEDS_INFO: نیاز به مدرک بیشتر
UNDER_REVIEW --> APPROVED: تأیید دستی
UNDER_REVIEW --> REJECTED: رد با دلیل
APPROVED --> COMPLETED: پذیرش مدیر جدید و Switch موفق
APPROVED --> CANCELED: انصراف یا ابطال پیش از Switch
REJECTED --> [*]
COMPLETED --> [*]
CANCELED --> [*]
قواعد
- تأیید مدیر فعلی شرط لازم بررسی نیست.
- بررسی مدارک و حمایت مالکان در نسخه فعلی دستی است.
- مدیر فعلی تا پذیرش شخص جدید در حالت عادی فعال میماند.
- تعلیق اضطراری یک وضعیت Role است و وضعیت Ticket را خودکار نهایی نمیکند.
- رد Ticket دسترسی مدیر فعلی را تغییر نمیدهد.
۱۶. OBM-WF-12 — جابهجایی اتمیک مدیر راهاندازی
sequenceDiagram
accTitle: جابهجایی اتمیک مدیر راهاندازی
accDescr: پس از تأیید Ticket و پذیرش شخص جدید، نقش مدیر قبلی سلب و نقش مدیر جدید بهصورت اتمیک فعال میشود
autonumber
actor NewManager as مدیر پیشنهادی
participant App as تریپیلون
participant Ticket as سرویس پشتیبانی
participant Access as سرویس دسترسی
participant Audit as گزارش فعالیتها
Ticket->>App: Ticket تأییدشده
App->>Access: ایجاد Role در انتظار پذیرش
App-->>NewManager: امکان ورود و پذیرش Role
NewManager->>App: پذیرش Role با هویت تأییدشده
App->>Access: کنترل معتبرماندن Ticket و Scope
critical جابهجایی مدیر
Access->>Access: سلب Role مدیر قبلی
Access->>Access: فعالسازی Role مدیر جدید
Access->>Audit: ثبت Actor، زمان و وضعیت قبل و بعد
option شکست عملیات
Access->>Access: Rollback به مدیر قبلی و Retry امن
end
Access-->>App: نتیجه جابهجایی
App->>Ticket: ثبت COMPLETED
App-->>NewManager: نمایش دسترسی فعال
Invariantها
- پیش از پذیرش مدیر جدید، Role مدیر فعلی حفظ میشود.
- نتیجه عملیات یا «مدیر قبلی فعال» است یا «مدیر جدید فعال»؛ حالت بدون مدیر مجاز نیست.
- Roleهای دیگر مدیر قبلی حذف نمیشوند.
- درخواست تکراری Switch نتیجه قبلی را برمیگرداند.
- Suspension اضطراری باید Actor، دلیل و زمان داشته باشد.
۱۶.۱. OBM-WF-13 — ثبت و تأیید قبض واریز بانکی
وضعیتها
| کد |
عنوان |
اثر بر مانده |
DRAFT |
پیشنویس |
بدون اثر |
SUBMITTED |
ارسالشده |
بدون اثر |
UNDER_REVIEW |
در حال بررسی |
بدون اثر |
NEEDS_CORRECTION |
نیازمند اصلاح |
بدون اثر |
REJECTED |
ردشده |
بدون اثر |
APPROVED |
تأییدشده |
آماده ثبت Payment |
APPLIED |
اعمالشده |
مانده Unit Ledger کاهش یافته است |
stateDiagram-v2
accTitle: چرخه قبض واریز بانکی
accDescr: قبض پس از ارسال و بررسی مدیر فقط در صورت تأیید به Payment تبدیل و روی مانده واحد اعمال میشود
state "پیشنویس" as DRAFT
state "ارسالشده" as SUBMITTED
state "در حال بررسی" as UNDER_REVIEW
state "نیازمند اصلاح" as NEEDS_CORRECTION
state "ردشده" as REJECTED
state "تأییدشده" as APPROVED
state "اعمالشده" as APPLIED
[*] --> DRAFT
DRAFT --> SUBMITTED: ثبت مبلغ، تاریخ، پیگیری و فایل
SUBMITTED --> UNDER_REVIEW: ورود به صف بررسی
UNDER_REVIEW --> NEEDS_CORRECTION: اطلاعات ناقص یا ناخوانا
NEEDS_CORRECTION --> SUBMITTED: اصلاح و ارسال مجدد
UNDER_REVIEW --> REJECTED: رد با دلیل
UNDER_REVIEW --> APPROVED: تأیید Role مالی مجاز
APPROVED --> APPLIED: ثبت Payment و تخصیص به Bill
REJECTED --> [*]
APPLIED --> [*]
Invariantها
- هیچ وضعیت پیش از
APPLIED مانده Unit Ledger را کاهش نمیدهد.
- Transition از
APPROVED به APPLIED باید با شناسه قبض idempotent باشد.
- قبض تأییدشده به یک Payment و تخصیص مشخص به Bill یا مانده واحد متصل میشود.
- تأییدکننده نباید همان پرداختکننده باشد، مگر Policy ساختمان صریحاً اجازه دهد.
- تغییر فایل یا مبلغ پس از
UNDER_REVIEW نیازمند بازگشت به NEEDS_CORRECTION و ارسال مجدد است.
- رد قبض باید دلیل قابل مشاهده برای پرداختکننده داشته باشد.
۱۷. Transitionهای ممنوع سراسری
| موجودیت |
Transition ممنوع |
| Setup Request |
ایجاد ساختمان پیش از PAID |
| Payment |
FAILED به SUCCEEDED بدون اعتبارسنجی مجدد |
| Provisioning |
دریافت وجه مجدد برای Retry داخلی |
| Setup Section |
اعلام COMPLETED بدون معیار معتبر همان بخش |
| Import Attempt |
ثبت بخشی از فایل دارای خطای مسدودکننده |
| Facility |
DRAFT به ACTIVE بدون Guardهای کامل |
| Manual Payment Receipt |
SUBMITTED یا UNDER_REVIEW به کاهش مانده بدون APPROVED و ثبت Payment |
| Invitation Envelope |
فعالسازی مجدد CANCELED بدون Envelope جدید |
| Delivery Attempt |
تغییر نتیجه Attempt قبلی بهجای ساخت Attempt جدید برای Retry |
| Role Assignment |
PENDING_ACCEPTANCE به ACTIVE بدون پذیرش و Scope معتبر |
| Relationship |
حذف Person یا Account برای پایان رابطه |
| Support Ticket |
APPROVED به COMPLETED پیش از پذیرش و Switch موفق |
| Manager Switch |
سلب مدیر قبلی بدون فعالسازی اتمیک مدیر جدید، مگر Suspension اضطراری |
۱۸. تصمیمهای باز
| شناسه |
موضوع |
اثر |
OPEN-WF-01 |
نام نهایی وضعیتهای Envelope |
پیش از پیادهسازی با Domain Model هماهنگ شود |
OPEN-WF-02 |
وضعیتهای غیرفعالسازی و آرشیو Facility |
به طراحی ماژول رزرو وابسته است |
OPEN-WF-03 |
سیاست Timeout و Retry خودکار Payment در UNDER_REVIEW |
SLA عملیاتی باید تعیین شود |
OPEN-WF-04 |
سیاست Retry و هشدار Provisioning طولانی |
SLA و Escalation باید تعیین شود |
OPEN-LEGAL-01 |
مسئولیت مالک جاری برای بدهی واحد |
نیازمند بررسی حقوقی |
OPEN-LEGAL-02 |
شمارش و اولویت حمایت مالکان برای تغییر مدیر |
نیازمند بررسی حقوقی |
۱۹. معیارهای پذیرش
۲۰. منابع مرجع Mermaid
بازگشت