Partners
SIMPROCESS Interface Capabilities
SIMPROCESS allows for communication outside itself in a variety of ways:
Database operations via JDBC
SIMPROCESS can read from or write to any database that supports ODBC if an appropriate Java JDBC driver is available for it. Java includes a built-in driver called the JDBC-ODBC Bridge, which enables its use with Microsoft Access and some other databases. This is how SIMPROCESS interacts with the Access database that is installed on Windows platforms. Additional testing has been done with MySQL, a popular Relational DBMS available for a variety of operating systems. A sample properties file for using MySQL with SIMPROCESS is included with the installed product.
As described in Chapter 13 of the SIMPROCESS User's Manual, a free Java driver is available for MySQL, and was tested with SIMPROCESS on both currently supported platforms and a MySQL database on Linux, Mac OS X and Windows (clearly demonstrating the ability to take advantage other operating systems on which SIMPROCESS is not currently available). There are numerous Java drivers available, both free and commercial, which will facilitate JDBC interaction with databases and perhaps even some other applications.
Reading and writing Microsoft Excel-compatible spreadsheet files
With the SIMPROCESS Expression Language, it's possible to both read and write files that are fully compatible with Microsoft Excel 2002 as well as the ability to read/write in the newer XML format " Microsoft SpreadsheetML." This capability in SIMPROCESS uses a portion of the capability provided by the freely available Jakarta POI project.
External Interaction via Java Remote Method Invocation (RMI)
SIMPROCESS supports, via an add-on license, what are collectively referred to as "remote capabilities." Most of the features enabled by this add-on use Java's RMI technology, which allows an "object" to be looked up via the RMI server's naming facility and then to optionally pass parameters to a method to be invoked on the object. Some of the SIMPROCESS features enabled via this add-on include:
Use of an external "plot server," so that SIMPROCESS plots may be remotely displayed. In having plots hosted on another system, the workload of the system on which SIMPROCESS is running can be reduced. Or the plots can simply be displayed on another Java-enabled system that's more conducive to viewing by interested parties, whether or not SIMPROCESS is available for that system.
Enables the RemoteCall method in SIMPROCESS expressions. This method, described in more detail in Appendix F of the SIMPROCESS User's Manual, allows invocation of methods on remote Java objects via RMI. Sample Java source code is included with SIMPROCESS that shows a tiny fraction of what could be done via RemoteCall.
Enables the use of the ExternalCall expression statement. Though not really "remote," this method allows for calling methods on Java objects provided by SIMPROCESS users. These Java classes can be added by placing compiled Java class files in the SIMPROCESS "ext" directory, or by placing Java Archive (JAR) files into the extensions directory (jre/lib/ext) of the Java Runtime Environment (JRE) installed with SIMPROCESS on all currently supported platforms. Virtually anything can be added to a model in this way.
SIMPROCESS recently expanded the types of data that can be returned to a calling model to include instances of Java's Object class, so that a model Attribute of type Object can contain a reference to the external Java object.
Enables the use of the External Schedule in the Generate Activity. When an External Schedule is present, a Generate will wait for an outside agent to signal it to release Entities into a model. This could include a person manually triggering such release, or an application. Because triggering of the External Schedule is done via RMI, it can be done from any Java-enabled system.
Communicating with Web Services via SOAPCall
With the addition of the new SOAPCall statement to its Expression Language, SIMPROCESS includes limited support for SOAP, the Simple Object Access Protocol. SOAPCall allows an available Web service to be invoked if it is RPC/encoded and returns a string value.
Enterprise Support: Communication with Web Services
SIMPROCESS has a proven track record in its role as a modeling and simulation tool. More and more often, however, it's useful to be able to call on simulation capabilities and use the results to make automated business decisions. SIMPROCESS can now provide that capability through the DispatcherService, a Web service that can be deployed in a Web Container (an application supporting the Java Servlet Specification) or an Application Server, and the SIMPROCESS Dispatcher.
In order to use the Dispatcher and related features, an alternate install set is offered by the installer, called "SIMPROCESS and Dispatcher." This is not the default set and must be specifically selected. It provides all the components needed to use SIMPROCESS as a regular desktop application, but it also includes new components which allow use of the Dispatcher to invoke SIMPROCESS as a service. The Dispatcher is licensed separately from the SIMPROCESS desktop application. The key components are:
The Dispatcher program (it will have the.exe extension on Windows systems) that controls the operation of one or more instances of SIMPROCESS when requests are received via the DispatcherService.
The dispatcher directory contains all of the other components needed to run SIMPROCESS as a service (including the DispatcherService deployment files). Its precise contents will vary according to the platform on which installation occurs.
The DispatcherService is included among the components in the new dispatcher directory. It is the gateway through which a client application obtains SIMPROCESS services. A Web Container or Application Server will be required in order to deploy and use the DispatcherService. A client application must be available that knows how to communicate with the DispatcherService, and a dispatcher must be able to advertise that its services are available to a DispatcherService.
The DispatcherService must know where to look for the list of service providers. And finally, a dispatcher must be able to obtain licenses when services are requested.