JobServer可以作為創建和加強您公司的業務流程以及內/外部作業處理的基礎。JobServer提供了豐富的特性及高度可擴展的環境,它可將計算最密集的數據庫ETL處理中的一切事務調度和運行到關鍵的業務處理,Web服務調用和單調的郵件通知中。
JobServer can be the foundation for building and consolidating your company's business processes and internal/external job processing. JobServer provides a feature rich and highly scalable environment for scheduling and running everything from your most compute intensive database ETL processing, to critical business number crunching, to web services calls, to the mundane email notifications.
強大的工具集
JobServer包含大量豐富的GUI工具集來管理作業和環境。您可以高精度高細節地設計,調度,運行以及跟蹤作業。通過使用JobServer您能知道作業是怎樣運行的,它正在運行什么內容以及它何時在運行,您也能知道某個作業最后一次是被誰修改的,誰最后關閉了服務器等等……如果一個作業拋出錯誤或警告,您可通過郵件得到通知或者通過任何一組作業搜尋那樣的情況(極好的可用報告特性)。當作業運行時,您能知道具體是什么被發送給了客戶,知道當作業運行時輸入是什么以及該作業產生了什么輸出。JobServer對一個作業從其創建開始到每次運行的整個過程都了如指掌。
調度引擎
JobServer調度引擎并沒有局限于一種調度規則。實際上,任何您能想到的重復或一次性的調度模式都可以通過JobServer調度引擎展示出來。下面舉例說明了一些該引擎所支持的調度規則:
從2003年1月1日上午9點開始,每15分鐘進行一次,只能在上午10點和下午7點半之間進行,結束時間是2004年3月3日下午5點
從2003年1月1日上午9點開始,在每個月的最后一個,第一個及第二個星期一和最后一個星期五進行
從2003年7月7日開始,在每個星期的星期一和星期三進行,2003年7月30日的星期三除外
多個一次性的日期可從任何調度安排中進行添加或移除。例如,這是一個簡單的方式用來添加或移除公司假期。
日內的多個時間范圍可被移除(例如,將早上1點至早上4點移除)
如果調度時間因為當機而丟失,則過去的調度時間可跳到之后或者當調度時間被移至到未來的某個日期時進行一次一個地執行。
在執行完一定數量的調度之后作業可被設置為停止運行(例如在運行了55次之后停止)。
過期窗口意味著一個作業需要從它的調度時間開始運行在一個特定的時間窗口中,否則它將過期;(當發生這種情況時管理員會被提醒)。
當作業失敗時可設置多層郵件提醒。可設置為JobServer層,分區層,作業組層和/或個人作業層。
JobServer可根據適用的硬件調整其規模。它的設計利用了多處理器及多核系統的優勢。JobServer采用了先進的超前緩存模式以確保在準備運行作業時沒有時間浪費。它采用了先進的多線程掃描設計能有效地檢測哪個作業準備就緒并迅速調度它們運行。調度引擎和相應的作業處理單元可被分割到任何數目的分區中。分區允許更高程度的并發并且對于那些包含了大量數目作業的設施來說是至關重要的,同時調度的及時性也是至關重要的。一個分區也可以被定義用于限制并發運行的作業數量從而避免資源超負荷。無論您是管理少量的作業還是成千上萬的作業,JobServer都是您的不二選擇。
一些先進的特性包括:
作業依賴性調度
作業依賴性規則可用于控制相互關聯的作業。例如,您有一個作業A每天必須在一組其它的作業被允許開始之前運行并完成。在這種情況下,為滿足依賴性,當作業A未完成時,組內的其它作業將不會被調度。
作業時間版本控制
想象您有一個作業通過電子郵件被發送給了客戶。下個月您需要更改郵件地址,作業時間版本控制允許您更改一個作業的屬性并且讓它們在今后的時間點上生效。您可以為一個作業設置任意數量的后期版本。
分區和分組
將JobServer環境分為多個計算分區用于管理和控制處理器,數據庫及其它資源利用。進一步將作業分組并限制用戶的權利,使得它們只能訪問作業組和分區內的資源。
詳細的作業運行計量及跟蹤
JobServer不僅僅是對作業何時運行及它們如何完成其處理過程進行一般地報告,它還清楚地知道作業運行的輸入及作業運行時產生的輸出。JobServer可跟蹤一個作業每次運行時準確的輸入和輸出。這使得用戶和管理員可以查詢歷史記錄,了解作業運行的準確時間及其配置信息,并根據這些詳細的證據知道作業中哪些已經完成,哪些還未完成。
開發者API
開發者API的目的是使公司可以按照他們的設想以模塊化和可重用的方式創建他們自己的作業。許多特性是可選的,因此您可以選擇您希望采用的特性層和可重用層。為創建一個將要運行在JobServer中的作業,所有需要做的便是實現一個接口并將所開發的Java軟件放到合適的JAR文件中。作業可以只是一行代碼,也可以是數千行代碼。
支持開源
SOAFaces API是JobServer用來定義一個作業做什么以及它在服務器中如何執行的創新基礎。該API是在一個開源機構上開發的,它允許開發者參與并推動創新,它甚至沒有鎖定供應商。在SOAFaces中還有一個子項目叫做BeanSoup。BeanSoup是SOAFaces中可重用組件的一個集合,它是在一個開發者社區中開發完成的。
基于構件的軟件開發在這里!
JobServer通過允許開發者創建和構造叫做SOAFaces的軟件構件實現了推動創新。在JobServer中調度和執行的每個作業是由一個或多個SOAFaces組成的。一個SOAFaces構件(又名tasklet)可以只是簡單的一行代碼或者是復雜的成千上萬行代碼或者更多。開發者可選擇性地開發這些tasklets,他們可以接受輸入并將輸出發送至其它的tasklets。這些操作全部可以通過一個簡單的POJO(簡單的Java對象)API來實現,因此沒有供應商鎖定,開發者也無須學習復雜的API。所有繁重的任務都是由JobServer容器來完成的。舉一個例子,所有的日志都是通過標準的Java日志API實現的,而JobServer容器則管理著日志輸出。GUI工具用于搜索和查看日志。如果一個tasklet希望將其輸出展示給其它的tasklets,它可以通過定義一個簡單的JavaBean來實現,并且它還能選擇性地定義其它的tasklets中哪些可作為其輸入傳入(使用一個輸出JavaBean)。更重要的是,用戶可以使用JavaBean GUI定制器直觀地編輯JavaBean上的這些輸入屬性。
Powerful Tools
JobServer comes with a rich set of GUI tools by which to manage your jobs and environment. You can design, schedule, run, and track your jobs with a high degree of precision and detail. Know how, what, and when a job ran. Know who last modified a job's schedule, who last shutdown the server ...etc. If a job throws errors or warnings get notified by email or quickly search for such conditions across any set of jobs (great reporting features available). When a job runs, know exactly what was sent to the customer. Know what inputs the job used when it ran and what outputs it generated. JobServer knows everything about a job from the time it is created all the way through each and every run.
Scheduling Engine
The JobServer Scheduling Engine leaves no scheduling rule out of your reach. Virtually, any repeating or one-off scheduling pattern that you can imagine can be represented using the JobServer Scheduling Engine. As an example, here is a sample of scheduling rules that are supported:
- Every 15 minutes starting on 1/1/2003 09:00AM and only between 10:00AM and 7:30PM and ending on 3/3/2004 5:00PM
- Every other month starting on 1/1/2003 09:00AM and on the last, first and second Monday and last Friday of the Month
- Every other Week on Monday and Wednesday starting on 7/7/2003 except for Wednesday of 7/30/2003
- Multiple one-off dates can be added or excluded to any schedule. For example, this is a convenient way to include or exclude company holidays.
- Multiple intra-day time ranges can be excluded (e.g. exclude 1:00am to 4:00am)
- If schedule times are missed due to down time, past scheduling times can be skipped ahead to the future or can be executed one at a time until the schedule has moved to a date in the future.
- Jobs can be set to stop running after a certain number of scheduled executions (e.g. stop after the job has run 55 times).
- Expire window requires a job run within a certain time window from its scheduled time, otherwise, it will "expire" (administrators can be alerted when this happens).
- Multiple levels of email alert can be setup when jobs fail. This can be setup at the entire JobServer level, Partition level, Job Group level, and/or individual job level.
JobServer can scale with the hardware that is available to it. It is designed to take advantage of multi-CPU and multi-core systems. The JobServer uses an advanced look-ahead caching scheme to make sure that no time is wasted when preparing to run a Job. It employs an advanced multi-thread scanning design to efficiently detect what Jobs are ready to run and quickly prepare them for running. The Scheduling Engine and corresponding job processing unit can be segmented into any number of Partitions. Partitions allow for higher degrees of concurrency and are vital for installations that have a large number of jobs and where scheduler promptness is critical. A Partition can also be defined to limit the number of concurrently running Jobs to avoid resource overload. Whether you are manging a handful of jobs or tens of thousands of jobs, JobServer is up the task.
Some of the advanced features include:
Job Dependency Scheduling
Job dependency rules can be defined to control when jobs can run relative to each other. For example, say you have job A that must run and complete each day before a group of other jobs may be allowed to start. In this case, the jobs in the group will not be scheduled so long as job A has not completed and satisfied the dependency.
Job Time Versioning
Imagine you have a job that sends an email to a customer. Now next month you know that you will need to change this email address. Job Time Versioning allows you to change a job's properties and have them take effect at a future time. You may set an arbitrary number of future versions for a job.
Partitions and Groupings
Segment your JobServer environment into multiple computing Partitions to manage and control CPU, database, and other resource utilization. Further organize jobs into Groups and then restrict users rights to only the Job Groups and Partitions you want them to have access to.
Detailed Job Run Accountability and Tracking
JobServer goes beyond just general reporting of when jobs run and how they completed their processing. Know exactly what inputs the job used when it was run and exactly what outputs it generated as it ran. JobServer can track the exact inputs/outputs used by a job for each and every run. This give the user and administrator the ability to go back into history, at the exact time the job was run, and know how it was configured. This allows you to give customers and users detailed proof of what was or wasn't done to the job.
Developer API
The goal of the developer API is to allow companies to build their own jobs in a modular and reusable fashion as they so desire. Many of the features are optional, so you may choose the level of functionality and reusability that you wish to employ. To create a job that will run in JobServer, all it takes is implementing one interface and putting the developed Java software into an appropriate JAR file. The job can be one line of code or thousands of lines of code.
Support for Open Source
he SOAFaces API is an innovative foundation that JobServer uses to define what a job does and how it executes within a server. The API is developed on an open source foundation allowing developers to get involved and drive innovation even further, and without vendor lock in. There are also a sub project called BeanSoup that builds on the SOAFaces. BeanSoup is a collection of reusable SOAFaces components implemented and contributed by a community of developers.
Component Software Development is Here!
JobServer is driving innovation by allowing developers to build and compose component software called SOAFaces. Every job that is scheduled and executed within the JobServer environment is composed of one or more SOAFaces. A SOAFaces component (aka tasklet) can be as simple as a single line of code or as complex as ten thousand or more. Developers have the option of developing these tasklets in such as way that they can accept input and send output to other tasklets. This is all done using a simple POJO (plain old Java objects) API, so that there is no vendor lock in or complex API for developers to learn. All the heavy lifting is done by the JobServer Container. As an example, all logging is done using the standard Java Logging API where the JobServer Container manages the log output. GUI tools are provided to search and view the logs. If a tasklet wishes to expose its outputs to other tasklets, it can do so by defining a simple JavaBean and it can optionally define what inputs can be passed to it from other tasklets (using an output JavaBean). What's more, is that users can also visually edit these input properties on the JavaBean using JavaBean GUI Customizers.