2012-03-05 2 views
3

Я буду формулировать вопрос в контексте моего приложения, но я думаю, что он имеет более широкий охват, как правило, для конфигурации. Мое приложение позволяет компаниям отслеживать отсутствие и отпуск для своих сотрудников. Одним из преимуществ является то, что он автоматически увеличит право на отпуск для человека на основе правил, установленных работодателем. Намерение заключается в том, чтобы компания выбирала между:Что лучше всего подходит для настройки конфигурации приложения?

A) автоматически увеличивать право на работника на определенное количество дней в году, например. с 1 января каждого года, отпускное право увеличивается на 1 день; или

B) право работника увеличивается в зависимости от продолжительности службы, например. после двухлетнего трудоустройства, увеличение прав на 2 дня

Каков наилучший способ реализации этой функции? Первый вариант довольно прост для реализации, поскольку я отслеживаю даты начала и окончания каждого года отпуска, а прирост для каждого сотрудника может быть сохранен как целое.

Я думаю, что я ищу лучшие решения для хранения выбранного метода; как сохранить соответствующие параметры и все в расширяемом формате, что позволит мне добавить дополнительные методы позже.

Я работаю с Ruby on Rails, но вопрос, вероятно, относится к другим языкам.

Благодаря

Робин

+0

Смогло ли работодатель установить различные правила для разных сотрудников? Или это просто одно правило для каждого, которое время от времени меняется? – Ashitaka

+0

Я бы сказал одно правило, применимое ко всем сотрудникам. Различные правила для каждого сотрудника - это крайний случай, с которым я не хочу иметь дело. –

ответ

0

А что: хранить баланс в Employee. Сотрудник принадлежит Компании. Когда придет время, установить баланс, используя что-то вроде

self.company.set_balance(self.balance) 

Так что ваш сотрудник оценщик работает над всеми сотрудниками и просит компанию пересчитать баланс.

Если это глобальная политика, вам не нужно сообщать Компании, кто является сотрудником, но если вам нужно иметь особые случаи, вы можете передать Employee методу set_balance, чтобы он имел больше информации о работник пересчитывается.

Что касается стратегии Compay в том, как увеличить количество дней, я бы поставил ее в модель, чтобы ограничить изменения кода, необходимые для изменения стратегии.

Если это простое правило, может быть, просто держать его в ключ/значение пары:

«holiday_entitlement»/«плоский» или «holiday_entitlement»/«выслуга»

Я бы не сохраняйте значения (1 или 2) в БД, чтобы избежать взлома интеллектуальных сотрудников в БД и размещения «благоприятных» значений там :)

Смежные вопросы