Scenarios For Using External/Remote Capability

Introduction

The external/remote capability in SIMPROCESS provides our users and service team with powerful capabilities to extend SIMPROCESS models. This capability can be as subtle as placing real-time plots on another computer to speed up the simulation on the desktop where the model is running to highly complex interaction with user-written applications, commercial off the shelf software packages, and dispersed models over a network. This describes some scenarios where these capabilities might have practical application and furthermore, describe the level of complexity that may be involved in using the features.

Remote Plot Capability

This capability is one of the simplest forms of the external/remote capabilities. It allows users to set up a separate computer or computers to handle the displaying of real-time plots. Real-time plots provide good feedback in graphical form as to what is going on in the model during simulation, and they provide a medium that is easily understood by an audience. SIMPROCESS allows custom definitions of models with multiple data variable sources and multiple data lines on the real-time plots. It also provides the capability to define plots as “hidden” so as to not clutter up the screen immediately upon the start of simulation. The hidden plots can be displayed via a toolbar button at any time.

The remote plot capability also allows multiple computers to present the plots while the simulation is running. For high-end multi-media rooms with multi-panel projection systems, this feature is very powerful. In addition to relieving the primary simulation computer from having to clutter the screen with plots, it will also relieve the simulation computer of some of the processing, therefore speeding up the simulation. (This assumes the computers that are handling the remote plots are connected to the simulation computer on a relatively high-speed LAN.)

As far as the complexity for the user, this feature is relatively simple. You must distribute a few files per the documentation to the computers that are required to do the plot serving and you must know the names of those computers on the network. If necessary, your network administrator or system administrator will be able to provide the information; however you most likely will be able to handle the set up by following the instructions in the documentation.

External Application Call

This capability provides you with the ability to extend simulation logic by writing separate code modules in Java (or Java driver modules that wrap other languages such as C++, C, etc.). External code can be used for complex computations, reading and writing of data, interfacing to graphical or animation packages, or simply a faster execution of complex expression scripts.

The Java code modules are placed in a pre-determined folder called “classes” that you create in the model’s directory. The ExternalCall function is used in the Expression language to make the calls to the user-written modules.

Typical uses for this feature are:

  • Calling user-written Java code modules that interface with another user application that is running on the same computer that the simulation is running on. These modules can handle extremely complex logic behind the Activities, Entities, and Resources of a model that may be too cumbersome to handle in the SIMPROCESS Expression language. Also, this facilitates the reuse of complex user-written, open source, public domain, or licensed algorithms to handle complex logic in a model.
  • Development of custom interfaces to user-licensed packages such as statistical packages, animation products, or custom databases.

Remote Application Call

This capability is very similar to the External Application Call feature except that the calls expect the external modules to be running as Java Remote Method Invocation (RMI) server modules. The advantage here is that the computer running the simulation does not have to have the application being called running on it. Similar uses are expected for this feature as in the External Call except that interfaces to complex commercial packages such as SAP, Oracle, Peoplesoft, Lawson, etc. are likely to be running on a separate server and will need this capability.

The way the user will implement this capability is to write Java RMI server modules and place them on the target server where the modules will then in turn call local or other server modules to do the planned processing. The RemoteCall function is used in the Expression language to make the calls to the user-written modules. You must know the name of the server where the RMI server modules are running, the name of the registered server object, the functions (Java methods) that are to be called, and the parameters the server modules expect. This feature is more complex than the External Application Call and requires knowledge of developing networked applications in Java.

Typical uses for this feature are:

  • Same as the External Call feature except the external modules are running on another computer over the network.
  • Interface with commercial packages such as SAP, Peoplesoft, and Oracle to help in gap analysis of reengineering legacy business processes to enterprise packages. The approach is to model the “As Is” processes in SIMPROCESS, then model the “To Be” processes that are implementing best practices in the product to determine the gaps and inefficiencies in the processes through SIMPROCESS simulations. The SIMPROCESS model could be set up to make RemoteCalls to server modules that would mimic the package’s transactions and better determine the functional “fit” of the package to the required “To Be” business processes.
  • Interface with user-written training programs that allow a student to play a role in the simulation. For example, a hand-held application could be developed that is passed out to students to interact with the simulation while it is running. It would allow the students to see the impacts of their decisions in different scenarios.

External Entity Generation Schedules

This provides the ability for external applications to “feed” Entities to a SIMPROCESS model. For example, the scenarios in Remote Application Call above could be reversed. A commercial package or user-written application could be running in production mode that would feed a SIMPROCESS simulation model that periodically simulates ahead to predict business impacts based on the production and operational systems.

This is accomplished by setting up an External Schedule in a Generate activity. The user must then develop a Java (or Java-wrapped) module that calls the Application Programming Interfaces (API) described in the SIMPROCESS user documentation to generate the entities in the SIMPROCESS model. A SIMPROCESS model that has an External Schedule defined will wait for Entities to arrive from the External Server module (which is running on the computer with the simulation). The user does not have to write the External Server module – it is distributed by CACI with SIMPROCESS. The user must write the external applications running on other computers on the network. The external application must know the name of the computer, the name of the model, the name of the Entities, the name of the External Schedule, and the name of the Generate Activity that will release the Entities during the simulation.

This feature is simple on the SIMPROCESS model side but can be very complex on the external application side.

A typical use for this feature is using user-written entity generation routines to feed a SIMPROCESS model. These routines may be based on user proprietary statistical patterns, up-to-date production system metrics, user-generated training interfaces that allow students to play “man in the loop” simulation scenarios, or feed transactions from commercial software packages.

An even more interesting implementation of this feature is the ability to develop portions of a SIMPROCESS model and distribute it to separate computers to share the workload. When using the feature in this manner, you do not have to write ANY Java code. You simply have to set up External Schedules in one model and use the RemoteCall feature described above in another model to call the External Schedule server that comes with SIMPROCESS. This capability may be of great interest to SIMPROCESS users that have developed separate models over the years to analyze different portions of their enterprise processes and now want to integrate the models together to have a broader range of analysis. Many times only relatively minor changes would need to be made in existing models to create a network of models.

See also Model to Model Interaction and Multiple Model Time Synchronization.