How the Optimize for Process works internally

Does anybody know how PMs are monitored using optimize in 7.1?

Optimize for Process uses WSDC to collect PM information. Who is calling the web services?

How does PM instance state is sent to Optimize DB? Does DC polls the PRT DB at specified intervals to monitor the PM state update and send it to analytical engine?

Documentation says that default port for WS DC is 15001 and in another place it is mentioned as 12603? What is the relationship?

hi mate,

hopefully i can clear up a few things for you. I have used optimize for infrastructure a fair but not for process however they work in a very similar way.

a standard optimize setup is comprised of

analysis engine
InfraDC server (for infrastructure)
WmOptimize (for processes)

The analsys engine has a port, the data collector also has its own port (15001 here). To setup optimize, one must use the “central configuratior” in the MWS. In this tool you provide it the locations of your MWS, broker, analysis, the prediction engine and the data collector.

The central configurator then does its configuration which hooks all these items together. When it has been “deployed” it then opened a new port on the analysis engine 12503. Now you need to go to your MWS system settings and point the MWS at the new analysis port. Now the engine is ready to go.

For Infrastructure, the InfraDC server collects data from ISs and Brokers, then ships it over the broker where it ends up in the analysis engine. From here you can view the data via MWS.

For process theres two modes it can be used, webmethods and non webemthods process.

For non webmethods processes, ie external ones, you need to write hooks in your external code, via the data collector which then gets put on the broker and ends up back in the analysis engine for your viewing.

I believe the way it monitors regular webmethods processes is via the WmOptimize package on the IS. This package does whatever it does to hook into the PRT and then ships the data onto the broker where it also ends up back in the analysis engine. If you look inside the WmOptimize config directory, theres a setting where you tell it what broker to send to (the same one you set up in the central configurator).

The data collector can also be used to send in other KPI data from other parts of your application, not even relating to models. For example if you have any system which processes orders, it could be coded to invoke the data collector for each order with some statistics which end up in the analysis engine and then you can treat that like any other KPI with graphs and rules and the like.

does this make things clearer? Your confusion is not surprising, it is a complicated product with many “moving parts” and indeed the fact that both versions of Optimize are basically the same under the surface isnt communicated very well, no doubt a marketing perspective.

From a friend who attended the Optimize training earlier this year…

Thank you very much for all the replies. It was useful indeed.



Related to this question… I still din´t get it.

To use BAM for non webmethods processes do I need to map the process into Designer and then deploy to ProcessAudit database? What kind of ‘hooks’ in my external code?

Or there is any other easy way to do it?


You’ll need to make a process (you can use Business Analyst perspective, since there need not be real smarts behind it.) In the process, have one step for each of your external activities (be they Java, C#, etc).

Upload the process for analysis.

In your external activities, call the web service defined at :/services/WSProcessDataCollector.wsdl. If you look at the WSDL, you’ll see that you can pass processname, phase and step name - the step name should match what is in the process you defined, the phase will be start or stop (call at beginning and end of your external activity.)

Hi Phil,

Thanks! Shoud I upload only for analysis?


Yes - just for analysis.