Saturday, February 18, 2012

Working on Quartz Queue Job Feature

My job at Bank of New York Mellon has been keeping me fairly busy lately. It's hard to juggle with Church, a family, a full time job, and time for open source projects. But it seems God has blessed me with not many skills nor hobbies other than programming, which I enjoy the most. So I tend to endup writing more code on weekend when the kids are asleep!

I haven't able to put much time into MySchedule other than fixed couple of urgent issues recently. If you are using this app, you should get the latest download now.

However, I did spent time helping out on Quartz development on their next major feature: Queue Jobs. I got most of the initial ground work done. I need to think more about how the concurrent issues with database row locking etc. This feature would allow you to add jobs into a queue structure that the quartz system will process without a trigger (meaning they are process immediatly.) These queue jobs would have a priority value that sorted by the queue as they are processed. We hope this feature would give some users to use the Quartz system to process jobs more effectively.

More of these to come in the future, so stay tuned.

Wednesday, December 28, 2011

MySchedule-2.4.0 release

I have released version 2.4.0 of MySchedule project, and you may get it here: http://code.google.com/p/myschedule/downloads/list 

In this release, I have added these:
* Quartz is running on Heroku! Check it out: http://stormy-flower-6956.herokuapp.com
* Added JdbcSchedulerHistoryPlugin that will record job history in DB.
* Added Cron Tool expression validation on web page.
* Added AppConfig configurable by a Properties file.
* Upgraded to quartz-2.1.1
* Fixed trigger display page.

Enjoy!

Sunday, December 11, 2011

I want to learn Fantom

I have been learning a new programming language in every few years or so. I started with C++ since my high school year, and since then, I have learned to use Perl, Java, Python, Groovy, Ruby, and Scala. Java has been the longest run among them, because most of my employers are requesting and willing to pay for it. Despite having a full time job working on Java, I still have the urge to learn something new. A new language give me new perspectives in viewing software development with different solutions. Each language has its distinct features and design goals toward some principles. Just as any tool, they are created to meet some unsatifying style, solutions, or new features in other existing programming languanges.

Recently I have stumbled upon another language that I think it worth my time to study it: it's called Fantom. Check it out at http://fantom.org

Monday, November 7, 2011

MySchedule-2.3.0 release is out

MySchedule is a web application that let you manage and run Quartz in a servlet container. You can get Quartz running and start exploring by simply dropping the war file into a web server such as Tomcat. 

Here is a short list of what's in this release: 
* Use myschedule-2.3.0 to manage Quartz-2.x 
* Use myschedule-1.6.0 to manage Quartz-1.8.x 
* Removed all unnecessary dependencies, and making the war file tiny (~ 3MB) 
* Support any Java ScriptEngine, and many examples are provided for you to script and manage the scheduler. 
* There is an independent quartz-extra jar that you may use outside of webapp, and it has been backported consistently to 1.x version as well. 
* Documentation is available on the project site. 

Try it out and let me know what you think. 

http://code.google.com/p/myschedule 

Enjoy! 

Sunday, October 23, 2011

A very lean war file for MySchedule

On the next coming MySchedule release, I've been working on removing few dependencies in the project to improve its size, but yet still keeping all the original functionality.



The result is about 70% reduction in war file size!


There are few things that I removed that resulted in a much smaller webapp.

1. Removed MySQL jdbc driver. Not every one uses Quartz with this DB, so including it in distribution is not necessary. You can easily add it into a server classpath without modifying the war.

2. Removed Groovy. I've improved the UI and the ScriptingJob component so that it works with any Java standard script engine. The JDK comes with JavaScript engine built-in! So now Groovy can be optional, and yet user can still use it by simply add it to the server classpath, and they can select the language in MySchedule UI. Without it, MySchedule will just default to JavaScript for scripting.

3. Removed Spring (MVC) Framework. Now this is a big task because MySchedule uses Spring annotations, controllers and service beans in IoC config to bootstrap the entire webapp. I've replaced it with a simple static AppConfig that wired my services together, and then used the plain Servlet API to process all http requests.



So why remove Spring? Don't get me wrong, I like working with Spring, and I think it's awesome framework. I have been working with Spring based projects for a long time, and I even have my own set of SpringMVC template to
start any web application quickly. I know where things are configured and where to add new code to make a Spring app works, and it's flexibility are fantastic for development, especially for larger projects.  But in MySchedule case, it is just a small webapp that has it's focus is on Quartz. I wanted to remove Spring to create less confusion for any one who want to look at the code. The Spring bundled with Quartz in its core, and I want to avoid (I didn't use any of that any way.) I also want to shrink the war file size. And lastly, just to 
challenge of myself that, yes there is life outside of Spring, and it still can be maintainable. :-P



So in replacing Spring, but kept very much of same coding style, I have created my tiny little web request processing library. It only has few classes, and it will allow me to use single Servlet controller to map and process all URL actions through many smaller unit of code, which I called action handler. Now MySchedule can be easily configured through one MainServlet class. Not bad!

Tuesday, October 18, 2011

Quartz Extra!

Looking for some extra goodies for Quartz Scheduler? Check out myschedule-2.2.0 release!

Besides some small update to the web UI for quartz management, this release comes with a standalone quartz-extra jar you may download. See what it can do in QuartzExtraUserGuide.