2017-04-27 75 views
0

我正在開發VB.NET中的Windows應用程序。此應用程序包含多個分析測試。當用戶點擊特定的測試時,加密的SQL查詢將被執行並且相應的輸出被粘貼到Excel中。如何在VB.Net中使用Windows窗體應用程序實現調度程序

現在需求是自動調度此任務,其中用戶將指定日期和時間,並在該特定時間測試應執行。此外,SQL查詢以加密格式存儲用於安全目的,所以我不能使用SSIS包或SQL作業代理來安排任務。

對於實現.NET Windows應用程序調度程序,可以使用哪些可能的方法/解決方法用於此特定方案?

+0

您可以創建一個簡單的控制檯應用程序來處理,然後通過Window自己的調度程序運行它? – Gimly

+0

我同意Gimly的觀點,即批處理或日常任務需要最好地執行,以便將這些測試或報告作爲與控制檯應用程序不同的可執行文件。那麼只需在Windows任務調度程序上創建一個任務 –

+0

我們正在使用[Quartz Scheduler](https://www.quartz-scheduler.net/),Windows計劃任務不會執行任務。 –

回答

0

好吧,我會試着解釋我們使用的方法。我們有一個網絡用戶界面,一個數據庫和兩個窗口服務, 用於更新計劃信息和一個負責導出到Excel的服務。

數據庫

的表與他的日程安排信息一起保存我們的查詢。 用於存儲所有出口的表格,因此我們可以保留歷史記錄。

的Web UI

通過一個webinterface我們可以存儲需要被調度的基礎上, 一些自動執行每小時,一些日常的,有的每週和每月的一些疑問。 在界面上,用戶可以根據時間表制定自己的病態配置。

當查詢被保存時,我們立即通過自寫的 SQL函數計算此查詢的nextruntime並將此值存儲在數據庫中。每次更新發生記錄,前查詢更改或日程安排信息更改時,我們都會更新上次修改的字段。

服務

我們的第一個服務在該領域nextruntime不爲空的所有信息的讀取。我們將這些信息保存在對象列表的內存中。 每隔5分鐘我們檢查是否有對該導出進行的更改,因爲可以更改查詢或更新日程表信息 。如果我們找到更新的記錄,我們會在對象列表中更新此信息。 在同一服務中,我們每30秒在對象列表上循環一次,看看nextruntime是否等於實際的系統日期時間。如果是這樣,我們向具有一定狀態的第二個表添加記錄,因此第二個服務知道哪些記錄需要處理,並且我們也保留增量序列號,以便按順序導出它們。

我們的第二個服務輪詢第二個表,並負責執行查詢,將結果導出到Excel,並在完成後根據計劃信息更新第一個表中的nextruntime字段。爲了創建Excel文件,我們使用了OpenXml庫。

我希望這對你有點清楚。

相關問題