PDA

View Full Version : زمانبندی ( scheduling)



masoud_pnu
جمعه 14 خرداد 1395, 13:01 عصر
با سلام. دوستان پروژه ای در دست اجرا داریم که برای بخشی ازش نیازهست برای مدیریت کارکنان یه سیستم زمانبندی پیاده سازی بشه. مثلا کارمند X وقتی مشغول انجام کاری هست، دیگه در طول انجام اون کار براش کار جدیدی تعریف نشه. مشکل اینجاست که میشه مثلا روی بازه های زمانی حساب کرد؟ مثلا داده ای از نوع date در sql server تعریف کنیم، بعد بیایم بگیم مثلا اگر X بین این بازه بود، دیگه اون X قفل بشه؟
امیدوارم رسونده باشم منظورم رو. ممنون میشم عزیزان راهنمایی بفرمایند.:قلب:

محمد آشتیانی
یک شنبه 16 خرداد 1395, 11:57 صبح
سلام
با داشتن دو زمان شروع و پایان (یکی شروع و پایان Task جاری کارمند و یکی شروع و پایان Task جدید که قراره تعریف بشه) میشه همپوشانی این بازه ها رو متوجه شد.

سمت #C چیزی شبیه به اینه

//اینها زمان های شروع و پایانی هستند که جدید وارد می کنید
var startDateTime;
var endDateTime;


//اینها زمانهایی هستند که از قبل برای انجام یک کار ثبت شدند
var registeredStartDateTime;
var registeredEndDateTime;


//کنترل همپوشانی بازه های زمانی
bool overlap = (startDateTime <= registeredEndDateTime) && (registeredStartDateTime <= endDateTime);



منظور شما همین بود؟

masoud_pnu
یک شنبه 16 خرداد 1395, 17:33 عصر
دقیقا جناب آشتیانی. مشکل همین همپوشانی کارهاست. مثلا کارمند X که انجام کاری براش برنامه ریزی شده، دیگه در طول این بازه براش نباید کار جدیدی تعریف بشه که اگر شد، مثلا یه alert بگه که فلانی مشغول به کاره. این بازهه چطور باید تعریف بشه؟؟ بطور دقیق همین مشکل منه.منظور از دید برنامه نویس هستش.مثلا چه نوع داده ای استفاده بشه؟ آیا میشه از نوع داده ای date sql server استفاده کرد؟

محمد آشتیانی
یک شنبه 16 خرداد 1395, 17:44 عصر
سلام
به صورت خیلی ابتدایی میتونه اینجوری باشه ، شما یک جدول داری که تسک ها رو در اون نگهداری میکنی ، چیزهایی مثل عنوان ، توضیح ، کسی که تسک رو اختصاص داده ، شخصی که بهش محول شده ، تاریخ و ساعت شروع ، تاریخ و ساعت پایان ، وضعیت جاری اون تسک و غیره (این میتونه خیلی شاخ و برگ داشته باشه ، حتی میتونی جدول دیگری برای ثبت گزارش کار روی هر تسک داشته باشی و خیلی موارد دیگه)
اینجا مهم فیلد شروع و پایان هست ، نوع این فیلد ها در Sql Server باید datetime باشه به نظرم.

برای اعلام به کاربر فرض کن بر اساس وضعیت جاری تسک (فعال ، غیر فعال ، در حال پیشرفت ، پایان یافته و ...) ، میتونی تسک فعال رو پیدا کنی و جزئیاتشو نشون بدی ، برای بررسی همپوشانی هم طبق پست قبل و با تاریخ شروع و پایان قابل انجامه.




موفق باشید.