Key Functionality & Technical Papers


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 point paper will describe 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 our users to set up a separate computer or computers to handle the displaying of real-time plots. SIMPROCESS allows real-time plots to be selected from dialogs. This feature provides good feedback in graphical form to what is going on in the model during simulation and provides a medium that is easily understood by the business audience that models are being presented to. 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 could be requested via a toolbar button when the user wished to see them.

The remote plot capability also lets the user to set up multiple computers to present the plots while the simulation is running. For high-end multi-media rooms with multi-panel projection systems, this feature will be 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 is assuming the computers that are handling the plot serving roles 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. The user must distribute a few files per the documentation to the computers that are required to do the plot serving and they must know the names of those computers on the network. Their network administrator or system administrator will be able to provide the information and assistance if necessary, however most users should be able to handle the set up by following the instructions in the documentation.

External Application Call

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

The way the user will implement this capability is to write Java code modules and place them in a pre-determined folder called "ext" under the root directory where SIMPROCESS is installed. The ExternalCall function is used in the Expression language to make the calls to the user-written modules.

Typical uses for this feature are:

  • Write Java code modules to interface with another user application that is running on the same computer that the simulation is running on. Handle extremely complex logic behind the activities, entities, and resources of a model that are too cumbersome to handle in the SIMPROCESS Expression language. Reuse of complex user-written, open source, public domain, or licensed algorithms to handle complex logic in a model. For example, a user may download optimization languages such as those found on the Northwestern University Optimization Technology Center site and develop optimizations for a SIMPROCESS 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 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. The user 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 the user to have knowledge of developing networked applications in Java.

Typical uses for this feature are:

The same uses as the External Call feature are also applicable here 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 implemented best practices in the product and 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 Schedules

This capability provides the capability for external applications to "feed" entities to a SIMPROCESS model. For example, the scenarios in paragraph 4 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.

The way the user will implement this capability is to set 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 Generate Activity that it needs to send entities to during simulation.

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

Typical uses for this feature are:

The ability to develop 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 to 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, the user does not have to write ANY Java code. They simply have to set up External Schedules in one model and use the RemoteCall feature described in paragraph 4 in another model to call the External Schedule server that is built in to SIMPROCESS. The screen shots below illustrate this capability. There are two models each running on a different computer. The TwoModelsWorkingA model has an Expression script in the PassOnEntity6 activity that does a RemoteCall to the TwoModelsWorkingB External schedule in the Generate1 activity.

In turn, TwoModelsWorkingB then has an Expression script in the Entity6Dispose activity that does a RemoteCall back to TwoModelsWorkingA, feeding the External Schedule in the Generate33 activity. This example illustrates how separate models can be hooked together to form an integrated modeling environment across the network using several different computers.

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. The users could make relatively minor changes in their existing models to create a network of models.

At this point the simulation clock across the separate computers is not synchronized so the user must be aware of the impacts of separate simulation clocks on the separate computers. We will continue to enhance the external/remote capabilities to allow the users to identify a server simulation clock that will be used by all models at some point in the future.