We’ve been busy over the past 2 years working on several commercial region plug-ins for Oracle APEX. The first one off the production line is a resource scheduling plug-in. Using this plug-in you can easily manage your scheduling needs using a variety of scheduling views, with the most notable being the timeline and resource views in combination with recurring event support. The plug-in is built on top of the DHTMLX Scheduler Pro, which has a proven track record over many years.

Let’s dive into some of the features:
Multiple Views
Resource view: manage all your daily events grouped by resourcesTimeline view: manage all your events grouped by resources in a hierarchical tree view with expand/collapse capability
Week view: manage all your weekly events
Year view: see all your events in a yearly summary
Month View: see all your events for the month at one time
Create & Move events via Drag & Drop
Using drag & drop it’s easy to resize and move events between resources. On validation failure the view will be refreshed so that the event moves back to its original position. It is also possible to add fine grained support and disable individual events from being able to be moved via drag & drop.
Builtin Vs Custom APEX Dialog
Builtin Event Dialog: this is the event dialog that comes out of the box with the plugin, there’s nothing you need to do in terms of processing, it’s all handled for you. This means that you can have a fully functioning scheduler with just a few clicks and a tweak of the settings.APEX Dialog: you can override the inbuilt dialog using your own APEX dialog. This means you can have full control of event creation and editing.
Unavailability
You can block out time periods that prevent the user from creating or modifying events that overlap these periods of unavailability. They can be applied for all resources or for particular resources. For the first release of the plug-in this is achieved using the Javascript API we provide, which works really well in combination with our open source “FOS Execute PL/SQL Code” dynamic action plug-in.
Validation
Out of the box we provide the ability to check for event collisions/conflicts when scheduling resources i.e. a resource cannot have overlapping bookings in the same time slot, this also includes checking recurring schedules. We also provide the ability for you to validate using PL/SQL all event modifications e.g. via the dialog or when an event is moved or resized via drag & drop. This means that you can perform whatever checks are necessary.
Dynamic Actions
We provide an additional dynamic action plug-in so that you can perform declarative actions on the scheduler without having to resort to Javascript. Things like:
Theme Roller Support
We have provided the ability for you to customize all the coloring of the scheduler, forms, buttons etc.
API’s
We provide a PL/SQL API to allow you to generate a series of dates in SQL using a pipelined table function. We do not store the recurring entries in the database, they are virtual records unless modified. Therefore to see dates within a recurring schedule you can use our API.
- It will instantiate an APEX session when you call this directly from SQL
- It will set session state for any passed in items/values
- It will query the APEX data dictionary to find out the actual scheduler query
- It will then run this query and get the data within the date range provided
- It will then generate all recurring schedule dates and pipe the rows back to the client
This is useful for cases where you want to build in event reminder notifications using the DBMS_SCHEDULER, or if you just want to see the data in tabular format etc.
We also provide a Javascript API which you can call using apex.region(‘REGION_STATIC_ID’).someMethod().
Summary
We have spent a considerable amount of time fine tuning this plug-in, it’s packed with a lot of functionality that should make it versatile for many different requirements. It has been initially developed for a hospital in the UK to allow them to manage the scheduling of rooms.
If you have a similar requirement and would like to find out more about how this plug-in could help as well as reviewing our live demo then head over to our website to check it out: https://www.foex.at/scheduler-by-foex/