بزینس لاک

وقتی رکوردی ایجاد میشود، بعد از شناسه گرفتن، کاربر دیگر یا همان کاربر امکان ویرایش آن را نباید داشته باشد تا عملیات جاری به انتها برسد. به محض شناسه گرفتن رکورد، رکورد لاک میشود و بعد از اتمام عملیات (موفق/یا در صورت بروزخطا) رکورد از لاک خارج میشود.

همین روال در زمان ویرایش یک رکورد هم وجود دارد.

نسخه Api و آدرس

از نسخه ی API 2.16.5 به بعد در ادرس زیر امکان مشاهده ی لاک ها وجود دارد

Request Url
API_URL/v2/LockAdmin/

ورود به سیستم

یوزر باید یکی از مجوز های زیر را داشته باشد

  • IsAdmin
  • ISSysSupport

پنل ادمین

بعد از لاگین پنل جستجو نمایش داده میشود

  1. میتوانید ادرسی که میخواهید جستجو کنید. ترکیب کلید لاک عبارت است از module/table/recordid
    1. علامت ستاره * به معنای هر کاراکتری و به هر تعدادی است
  2. اطلاعات لاک را نمایش میدهد. در صورتی که کلیک کردید و صفحه ریلود شد به این معناست که رکورد انلاک شده است. در صورت لاک بودن رکورد اطلاعات شماره 3 نمایش داده میشود
  3. اطلاعات رکورد لاک شده
    1. کلید لاک
    2. زمانی که رکورد وارد لاک شده است
    3. شناسه کاربری که بنا به عملیات او رکورد لاک شده
    4. نام کاربر
    5. شناسه ی ریکویستی که عملیات لاک بر اساس ان صورت گرفته
  4. رکورد مورد نظر از لاک خارج میشود
  5. همه ث کلیدها بر اساس کلید جستجو شده آنلاک میشوند. درصورت خالی بودن کلید جستجو ، همه ریکوردها از لاک خارج خواهند شد

تنظیمات لاک در Api

در فایل appsettings.production.json در فولدر app

{
  "LockConfig": {
    "Type": "Redis",
    "RedisConfig": {
      "Host": "10.0.2.209",
      "Port": 9882,
      "DatabaseIndex": 0,
      "KeyPrefix": "lock_",
      "ExpirationInSeconds": 30
    },
    "MemoryConfig": {
      "ExpirationInSeconds": 30
    }
  }
}
  • در صورت خالی بودن تنظیمات اتومات Memory انتخاب میشود
  •  Type
    • در صورت نامعتبر بودن، اتومات Memory انتخاب میشود 
    • Redis
      • درصورتی که چند api به یک دیتابیس متصل هستند یا api ها در داکر scale شده اند
      • زمانی که در صورت ریست شدن api مهم باشد که لاک ها نگهداری شده باشند
      • در صورت ریست شدن ردیس لاک ها از بین نمیروند
    • Memory
      • زمانی که یک api وجود دارد
      • با ریست api لاک ها از بین میروند
  • RedisConfig
    • در صورتی که Type=Redis باشد اعمال میشود 
    • Host: باید p سرور ردیس وارد شود
      • در صورت خالی بودن اتومان به حالت Memory سوییچ میشود
    • port: باید پورت سرور ردیس وارد شود
      • در صورت خالی بودن اتومان به حالت Memory سوییچ میشود
    • DatabaseIndex
      • ردیس دارای حداکثر 16 دیتابیس است در اینجا امکان وارد کردن ایندکس دیتابیس وجود دارد
        • ردیس اصطلاحا دارای zero-based indexing است (0 تا 15)
        • در صورتی که عدد کمتر از صفر باشد اتومات صفر گذاشته میشود
        • در صورت ایندکس بزرگتر از 15 دیتابیس 15 در نظر گرفته میشود
    • KeyPrefix
      • برای کلیدهای لاک پیش فرض مقدار این تنظیم در نظر گرفته میشود. در صورت خالی بودن به صورت ژیش فرض _lock در نظر گرفته میشود
    • ExpirationInSeconds
      • مدت نگهداری کلید لاک
      • در صورتی که رکورد در این مدت زمان عملیات ویرایش یا ثبتش انجام نشود به صورت اتومات از لاک خارج میشود
  • MemoryConfig
    • در صورتی که Type=Memory باشد اعمال میشود 
    • ExpirationInSeconds
      • مدت نگهداری کلید لاک
      • در صورتی که رکورد در این مدت زمان عملیات ویرایش یا ثبتش انجام نشود به صورت اتومات از لاک خارج میشود
  • No labels