This example shows how to expose Web Central Workflow Rule as a Web Service. It illustrates the following use case: booking room reservations requests from an external source, such as a flat-panel display device that sits beside a conference room.
The configuration files for the Booking Service remoting configuration are in /WEB-INF/config/context/remoting/examples/webservices-cxf/ folder
. To use this example, configure WebCentral according to instructions in the readme.txt
, located in this folder. This configuration includes both remoting (Web Services support) and rendering (Web Central and Smart Client forms and reports support).
The current implementation of Booking Service does not use any authentication/security. For production deployment, you need to configure WebService to use security, which is appropriate for your deployment (for example, WS-Security: http://en.wikipedia.org/wiki/WS-Security).
The example consists of the following files in the /schema/ab-products/solutions/common/src/main/com/archibus/eventhandler/webservice
folder:
BookingService
class defines interface of the service that is implemented in BookingServiceImpl.java
: getBookings()
addBooking()
editBooking()
deleteBooking()
.Booking
object is a POJO (for Plain Old Java Object, i.e. an ordinary Java class) business object, implementing constructors and property access methods for the properties of the booking.BookingService
.The bookingService-remote
bean is defined in /WEB-INF/config/context/remoting/examples/webservices-cxf/webservices.xml
.
Each invocation is intercepted by the RemotingFilter
, which prepares the Web Central context: it uses the specified project ID to find and attach the project to the context. RemotingFilter
also attaches the core user session to the context.
When theBookingServiceImpl
object is initialized, its init()
method is called. This method can perform instance initialization using the supplied context (which provides access to servlet context).
BookingServiceImpl
implements BookingService
business methods addBooking()
, deleteBooking()
, etc.
Each BookingServiceImpl
business method converts the business method parameters into key/value pairs in a Java Map
, and passes that Map
to the ServiceHelper.WorkflowRuleInContext()
method. The business method also supplies the ServiceHelper
with the Web Central context and workflowRuleName
.
ServiceHelper.WorkflowRuleInContext()
returns an EventHandlerContext
, which holds any return parameters from the workflow rule. If the return parameter is required, you can extract it from the EventHandlerContext
using the getParameter()
method. The getBookings()
method in the example illustrates this technique.
BookingServiceHandler
is a workflow rule event handler, which is called from the Web Service. It demonstrates how method names and parameters can be passed between the Web Service and the workflow rule.