2011-03-10 40 views
2

我們在我們的Web應用程序中有一個日曆。事件可以添加到日曆中,事件將具有一些開始日期和結束日期。如何在Java中創建自己的日曆提醒?

活動還可以提醒。因此,在添加事件時,如果用戶決定通過提醒電子郵件通知事件,則用戶可以在事件中設置提醒值。類似於我們在Outlook

例如,事件名稱:每週會議

開始時間:10年3月1日AM

提醒:1小時(也可以是15分鐘,30分鐘,1個小時,2小時,1天, 2天等)。

因此,在這種情況下,應該在事件發生之前(即1小時前)向用戶發送電子郵件。

數據庫中的事件表具有事件名稱,開始日期,提醒。

如何在Java中實現這個?

+0

我建議給我們看一些代碼。 – peterh 2015-09-19 16:33:35

回答

1

如果您不想使用外部調度程序,則可以使用Java Timer。您需要實現TimerTask接口並使用Timer對其進行調度,以滿足您需要的任何頻率。 TimerTask應該簡單地查詢數據庫以獲取所有即將發生的事件併發送電子郵件。

要獲取所有即將發生的事件,使用正確的SQL語法數據庫 -

WHERE(START_DATE - 今天)< REMINDER_ADVANCE

要發送電子郵件,使用Java mail API

+0

我們將使用石英和彈簧集成來安排通知電子郵件。真正的問題是準確地獲取即將發生的事件。什麼纔是正確的查詢來獲得事件通知? – ashishjmeshram 2011-03-10 10:58:19

+0

@rahulmohan我必須爲每個reminder_advances運行單獨的查詢嗎?即查詢是否在未來15分鐘內有事件,另一個查詢爲30分鐘等等,爲期1天,2天等等? – ashishjmeshram 2011-03-10 11:02:49

+0

@Ashish:不,你只需要一個查詢「SELECT * FROM EVENTS WHERE START_DATE - SYSDATE rahulmohan 2011-03-10 11:37:40

0

您可能想要運行預定的作業來檢查事件和提醒,並在必要時發送電子郵件。

如果您使用JBoss等應用服務器,您可以使用Quartz scheduler(JBoss通常包含石英版本)。然後將作業設置爲以最低的提醒粒度運行,例如每15分鐘一班。

1

現代方式:您可以將您的網絡應用程序與某些雲提醒服務(Google日曆,RTM,ToodleDo等)集成。Google日曆的日曆服務具有Java API,其他API也有用。

+0

現在使用完全不同的東西是不可能的。所以我們將不得不繼續我們所擁有的並試圖實現它。 :( – ashishjmeshram 2011-03-10 11:05:56

+0

我並沒有完全不同,你可以通過API將你的網站wtth整合到google中,例如google,所以你的用戶仍然會使用你的網站,但是你的網站會使用谷歌作爲後端提醒引擎。 – 2011-03-10 12:20:42