Adding scheduling to an application

D

Dinsdale

I'm looking at adding scheduling features to an application and I
wanted to ask the community about any experience with scheduling
components, either open source like from code project or from a vendor.


I'd like to be able to create schedules and lock resources for things
like collision detection (two events trying to use the same resource).
I've seen some GANTT charting components but I don't think that's what
I'm looking for. I'd essentially like to mimic the sort of
functionality that outlook has and work out the UI later. This will be
a web project to begin with, but eventually I'd like to separate out
the scheduler and have it run as some sort of service that can initiate
tasks much like the windows scheduler.

The options I'm looking at are these:
1) Roll your own: I've already written something like this once before.
I never got to see the long term viability of my solution but it was
designed to be very flexible. I could go back and write something
again, but I can't help wonder why I need to if someone else has done
something like this.

2) Database scheduling services: Most major DBs have a scheduling and
event tool but I don't know how easy integration with my app will be.
We're using SQL Server 2005 for this project and I know that reporting
services has a scheduling component but I still have integration
concerns. If anyone has used this as an option, please let me know how
it went.

3) Scheduling components: I'm looking at external tools for scheduling.
Does anyone have any experience with third party schedulers? Any input
would be good. I have started looking at GTP (Gantt Tool by
plexityhide), and XGantt by Netronic which is ASP.Net ready.


Any feedback would be great.

Thanks in advance!
Dinsdale
 
J

John Vottero

Dinsdale said:
I'm looking at adding scheduling features to an application and I
wanted to ask the community about any experience with scheduling
components, either open source like from code project or from a vendor.


I'd like to be able to create schedules and lock resources for things
like collision detection (two events trying to use the same resource).
I've seen some GANTT charting components but I don't think that's what
I'm looking for. I'd essentially like to mimic the sort of
functionality that outlook has and work out the UI later. This will be
a web project to begin with, but eventually I'd like to separate out
the scheduler and have it run as some sort of service that can initiate
tasks much like the windows scheduler.

The options I'm looking at are these:
1) Roll your own: I've already written something like this once before.
I never got to see the long term viability of my solution but it was
designed to be very flexible. I could go back and write something
again, but I can't help wonder why I need to if someone else has done
something like this.

2) Database scheduling services: Most major DBs have a scheduling and
event tool but I don't know how easy integration with my app will be.
We're using SQL Server 2005 for this project and I know that reporting
services has a scheduling component but I still have integration
concerns. If anyone has used this as an option, please let me know how
it went.

3) Scheduling components: I'm looking at external tools for scheduling.
Does anyone have any experience with third party schedulers? Any input
would be good. I have started looking at GTP (Gantt Tool by
plexityhide), and XGantt by Netronic which is ASP.Net ready.

Most of the scheduling components that I have seen just provide a UI tool
for creating an application that schedules things, they don't actually
schedule things.

Our product, JAMS, is an enterprise class task scheduler. JAMS supports:

- Time based schedules
- Event based scheduled
- Dependencies
- Resource allocation
- Parameter handling
- Load balancing
- Queues
- Centralized monitoring and management
- Easy integration with any .NET application
- Extensive control of security via ACLs
- Much, much more.

Coming soon:
- PowerShell support
- Workflow Foundation support
- ASP.NET interface

You can get more information and a free developers edition at:

http://www.mvpsi.com

John Vottero
JAMS Technical Support
 
K

Kevin Spencer

Scheduling features are easy, once you have thoroughly identified your
requirements. Unfortunately, although you may know what they are, you
haven't told us what they are. Instead, you've only talked in generalities.
And the problem with that is, there are many ways to implement scheduling,
but only one best way to implement scheduling for a particular application,
according to the requirements of the app.

Some applications have a Windows Service that handles scheduling. The
advantage of this over something like Outlook is that Outlook must be
running for the scheduled tasks to be performed. So, you can create a
service which handles the scheduled stuff, and an application that can talk
to the service if it needs to.

With an ASP.Net or web application, you have some serious problems to
surmount. Again, a Windows Service might be your best bet. The problem there
is that the only place you can schedule tasks in an ASP.Net app is in the
Application itself. The problem with that is that the Application will shut
itself down after a period of time with no user requests.

Another alternative is to include an API in your app code that can be
accessed from outside the running app, for example, in a class library. This
way, you can use something like Windows Task Scheduler to run the task
without having to start the app.

You can use a timer in your application to do scheduling. But again, the
problem there is, how can you be sure the app is running? As I said, it all
boils down to the specific requirements of your app.

--
HTH,

Kevin Spencer
Microsoft MVP
Chicken Salad Surgery

It takes a tough man to make a tender chicken salad.
 
D

Dinsdale

You bring up a good point. "Scheduling" is a pretty general idea.

- Single instance events, scheduled/re-occuring events: These could
range from meetings between clients, to planning a year long process
such as a project or fiscal year. It would be reall cool if we could
nest these events...
- Schedule Exceptions: Re-assigning a scheduled event to a different
time without re-adjusting the entire schedule. We also need to be able
to add notes to events in the future but have that re-adjusted so that
if the schedule changes, the notes are not lost... (at least stored so
the user can re-attach the comments to a new instance of the event)
- Resource Management: Taging resources for event occurances and
checking for collisions when adding new items.

At a later date, we will want to re-use this for things like event
notification and processing. At that time, I will look at moving the
"scheduling" into a Windows service and use remoting and asyncronous
events to do things like SMS messaging, scripted tasks, etc. That said,
I wonder what we can leverage from SQL Server 2005?

I guess the most significant requirement is being able to view and
manage schedules and resources.

As I've said, I've already done something similar before. But after
looking at JAMS, I can see that for a weeks worth of my wages, we can
have the functionality we need and just integrate it into the app.

Dinsdale
 
K

Kevin Spencer

Ah, I misunderstood your use of the word "schedule." In fact, you're talking
about using a calendar to schedule events, appointments, etc., like Access
does.

Well, you do, as you know, have 2 choices basically, roll your own, or use a
3rd Party app. There are plusses and minuses to both approaches. Using a 3rd
Party app will cost you less in the short run, perhaps a lot less. However,
it does create a dependency upon the tool in your app. Rolling your own is
going to cost more, unless you can offset the cost somehow, like creating a
library and/or a set of Controls to work with your own solution and
marketing these.

Which approach you take is largely a matter of which set of circumstances
you prefer in your situation. I generally go with the second option, as I
like to design my software for reusability and maintainability, with loose
coupling in many places. So, I'm going to have something reusable when it's
done in any case, and there's nothing like learning something new from time
to time, when you create something you haven't had the opportunity to create
before. But I can certainly see situations in which the logical choice would
be to go with a reliable 3rd Party vendor, as long as they were reliable.

--
HTH,

Kevin Spencer
Microsoft MVP
Chicken Salad Surgery

It takes a tough man to make a tender chicken salad.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top