Open ESB Tip : Graphical BPEL Monitoring and Usage Statistics

Following on from my previous SVG Based BPEL Graphical Monitoring example I have extended the sample Visual Web Pack project to include simple BPEL 2.0 Usage Statistics. This addition provides the Business User with an additional level of information covering overall usage and Minimum, Maximum and Average processing time. Therefore in addition to providing Specific Instance Monitoring using the dynamically generated SVG we can now view the BAM Style processing statistics for each deployed BPEL Process and similar for each activity within a selected BPEL Process. These are presented both in a tabular and graphical format (SVG) for the selected BPEL Process.


Related Articles


Resources

Processing Statistics


The currently release of the project (at the time of writing the blog entry) works with the default Java DB Persistence / Monitoring database, although I will extend and update the underly project in the future, but can easily be changed. The reason for the restriction is because of the nature of the SQL that is executed to retrieve the Statistical information. JavaDB / Derby has a specific function format to allow Data Arithmetic and this is what has been used to calculate the Minimum, Maximum and Average times. If the user decided to use another database then the SQL syntax will need to be changed. I fully intend to add the functionality that will allow any of the supported Persistence / Monitoring Databases to be used auto-magically.

The image below displays the result of the Statistics query, although I only have a single BPEL Process deployed, and it can be seen that it simply displays the number of executions and then the Maximum, Minimum and Processing times (in Seconds). Selecting the appropriate Graph Icon will generate the Bar Chart (although again I will extend this) to the right of the table. Once a BPEL Instance Statistic row has been selected the breakdown of its activities can be seen. Again this table will show Count, Maximum, Minimum and Average processing time (in Seconds) and selecting the Graph icon for a particular row will generate and display an SVG Bar Graph. Thus given these statistics we can easily identify which which Process Instances are taking a long time to process and within each of the Instance which Activities are taking a long time.

Instance Stats

To add the Statistics functionality to the existing Graphical BPEL Monitor I needed to add a number od additional database queries and I will briefly describe these and how they will need to be changed to allow access to other databases. In addition to these changes you will notice that I have modified the Look and Feel of the page to provide a Tabbed Layout allowing the you to choose to either monitor the processes or statistics.

New Database Queries


To provide the Statistical information we will need to create four additional database queries. Two of these will be against the MONITORBPELINSTANCE table and two against the MONITORBPELACTIVITY table.

The RowSets associated with these queries can be quickly created by dragging the database tables onto the canvas, making sure not to drop them on the TabSet, and within the displayed dialog selecting the create new RowSet in the SessionBean and naminging them appropriately.

Instance Statistics Table
The instance statistics table is create by dragging a new copy of the the MONITORBPELINSTANCE table onto a new Table object. The SQL associated with the RowSet was then modified to the following and the the Table modified to match that displayed above.

SELECT MONITORBPELINSTANCE.BPELID, COUNT(MONITORBPELINSTANCE.BPELID) AS INSTANCECOUNT, MAX({fn TIMESTAMPDIFF(SQL_TSI_SECOND,MONITORBPELINSTANCE.STARTTIME,MONITORBPELINSTANCE.ENDTIME)}) AS MAXPROCESSINGTIME, MIN({fn TIMESTAMPDIFF(SQL_TSI_SECOND,MONITORBPELINSTANCE.STARTTIME,MONITORBPELINSTANCE.ENDTIME)}) AS MINPROCESSINGTIME, AVG({fn TIMESTAMPDIFF(SQL_TSI_SECOND,MONITORBPELINSTANCE.STARTTIME,MONITORBPELINSTANCE.ENDTIME)}) AS AVGPROCESSINGTIME FROM MONITORBPELINSTANCE WHERE STATUS='COMPLETED' GROUP BY MONITORBPELINSTANCE.BPELID

The chart button can then be added and modified as follows:

public String instanceChartBtn_action() {
    String bpelId = (String) getValue("#{currentRow.value['MONITORBPELINSTANCE.BPELID']}");
    System.out.println("\*\*\* APH-I2 : BPEL Id " + bpelId);
    getSessionBean1().setBpelId(bpelId);
    String bpelFilename = getBPELName() + ".bpel";
    getSessionBean1().setBpelFilename(bpelFilename);

    try {
        getSessionBean1().getActivityStatisticsRowSet().setString(1, getSessionBean1().getBpelId());
        generateInstanceGraphSVG();
        activityStatisticsDataProvider.refresh();
    } catch (SQLException ex) {
        Logger.getLogger(BPELMonitorPage.class.getName()).log(Level.SEVERE, null, ex);
    }
    return null;
}

protected void generateInstanceGraphSVG() {
    GraphElement graphElement = null;
    GraphElement graphElements[] = new GraphElement[0];
    List<GraphElement> graphElementList = new ArrayList<GraphElement>();
    int value = 0;
    try {
        getSessionBean1().getInstanceByIdStatisticsRowSet().setString(1, getSessionBean1().getBpelId());
        getSessionBean1().getInstanceByIdStatisticsRowSet().execute();
        if (getSessionBean1().getInstanceByIdStatisticsRowSet().first()) {
            do {
                graphElement = new GraphElement();
                value = getSessionBean1().getInstanceByIdStatisticsRowSet().getInt(1);
                System.out.println("\*\*\* APH-I2 : Value " + value);
                graphElement.setValue((double) value);
                graphElementList.add(graphElement);
            } while (getSessionBean1().getInstanceByIdStatisticsRowSet().next());
            graphElements = graphElementList.toArray(graphElements);
            String svgStr = getSessionBean1().generateGraphSVG(getSessionBean1().BAR_CHART, graphElements);
            svgFactory.storeSVG(getSessionBean1().getInstanceGraphSVGFile(), svgStr);
        }
    } catch (SQLException ex) {
        Logger.getLogger(BPELMonitorPage.class.getName()).log(Level.SEVERE, null, ex);
    }
}

Instance Statistics Graph
The statistics graph requires a subtly different SQL, below, because we need to restrict based on the Instance Id and is executed directly from generateInstanceGraphSVG() method.

SELECT {fn TIMESTAMPDIFF(SQL_TSI_SECOND,USR2.MONITORBPELINSTANCE.STARTTIME,USR2.MONITORBPELINSTANCE.ENDTIME)} AS PROCESSINGTIME  FROM USR2.MONITORBPELINSTANCE WHERE USR2.MONITORBPELINSTANCE.BPELID = ?


Activity Statistics Table
The Activity Statistics table can be created by dragging a new copy of the MONITORBPELACTIVITY database table onto a Visual Web Pack Table component. The associated SQL query should be modified as follows :

SELECT ALL MONITORBPELACTIVITY.ACTIVITYXPATH, COUNT(MONITORBPELACTIVITY.ACTIVITYXPATH) AS ACTIVITYCOUNT, MAX({fn TIMESTAMPDIFF(SQL_TSI_SECOND,MONITORBPELACTIVITY.STARTTIME, MONITORBPELACTIVITY.ENDTIME)}) AS MAXPROCESSINGTIME, MIN({fn TIMESTAMPDIFF(SQL_TSI_SECOND,MONITORBPELACTIVITY.STARTTIME, MONITORBPELACTIVITY.ENDTIME)}) AS MINPROCESSINGTIME, AVG({fn TIMESTAMPDIFF(SQL_TSI_SECOND,MONITORBPELACTIVITY.STARTTIME, MONITORBPELACTIVITY.ENDTIME)}) AS AVGPROCESSINGTIME FROM MONITORBPELACTIVITY, MONITORBPELINSTANCE WHERE MONITORBPELACTIVITY.STATUS='COMPLETED' AND MONITORBPELACTIVITY.INSTANCEID = MONITORBPELINSTANCE.INSTANCEID AND MONITORBPELINSTANCE.BPELID = ? GROUP BY ACTIVITYXPATH

The chart button can then be added and modified as follows:

public String activityChartBtn_action() {
    String activityXPath = (String) getValue("#{currentRow.value['MONITORBPELACTIVITY.ACTIVITYXPATH']}");
    System.out.println("\*\*\* APH-I2 : Activity XPath " + activityXPath);
    getSessionBean1().setActivityXPath(activityXPath);
    generateActivityGraphSVG();
    return null;
}

protected void generateActivityGraphSVG() {
    GraphElement graphElement = null;
    GraphElement graphElements[] = new GraphElement[0];
    List<GraphElement> graphElementList = new ArrayList<GraphElement>();
    int value = 0;
    try {
        getSessionBean1().getActivityByXPathStatisticsRowSet().setString(1, getSessionBean1().getBpelId());
        getSessionBean1().getActivityByXPathStatisticsRowSet().setString(2, getSessionBean1().getActivityXPath());
        getSessionBean1().getActivityByXPathStatisticsRowSet().execute();
        if (getSessionBean1().getActivityByXPathStatisticsRowSet().first()) {
            do {
                graphElement = new GraphElement();
                value = getSessionBean1().getActivityByXPathStatisticsRowSet().getInt(1);
                System.out.println("\*\*\* APH-I2 : Value " + value);
                graphElement.setValue((double) value);
                graphElementList.add(graphElement);
            } while (getSessionBean1().getActivityByXPathStatisticsRowSet().next());
            graphElements = graphElementList.toArray(graphElements);
            String svgStr = getSessionBean1().generateGraphSVG(getSessionBean1().BAR_CHART, graphElements);
            svgFactory.storeSVG(getSessionBean1().getActivityGraphSVGFile(), svgStr);
        }
    } catch (SQLException ex) {
        Logger.getLogger(BPELMonitorPage.class.getName()).log(Level.SEVERE, null, ex);
    }
}


Activity Statistics Graph
The statistics graph requires a subtly different SQL, below, because we need to restrict based on the Instance Id and is executed directly from generateActivityGraphSVG() method.

SELECT {fn TIMESTAMPDIFF(SQL_TSI_SECOND,USR2.MONITORBPELACTIVITY.STARTTIME, USR2.MONITORBPELACTIVITY.ENDTIME)} AS PROCESSINGTIME FROM USR2.MONITORBPELACTIVITY, MONITORBPELINSTANCE WHERE MONITORBPELACTIVITY.STATUS='COMPLETED' AND MONITORBPELACTIVITY.INSTANCEID = MONITORBPELINSTANCE.INSTANCEID AND MONITORBPELINSTANCE.BPELID = ? AND USR2.MONITORBPELACTIVITY.ACTIVITYXPATH = ?

Page Header Changes


Because we do not want the data to be cached thus causing the SVG images to become stale and not refresh correct I need to modify the Header section of the Page and add a number <META> tags to force the browsers to work as I wished. These can be added using the Meta tag in the Advanced section of the Palette.

<webuijsf:head id="head1">
    <webuijsf:link id="link1" url="/resources/stylesheet.css"/>
    <webuijsf:meta content="0" httpEquiv="expires" id="expiresMeta"/>
    <webuijsf:meta content="no-cache" httpEquiv="cache-control" id="cacheControlMeta"/>
    <webuijsf:meta content="no-cache" httpEquiv="pragma" id="nocacheMeta"/>
    <webuijsf:meta content="#{SessionBean1.refreshPeriod}" httpEquiv="refresh" id="refreshMeta"/>
</webuijsf:head>


Processing Monitoring



Monitor Page

Comments:

This is pretty cool, however whenever i try to view a bpel process that contains a call to an EJB webservice, it returns ERROR http status 500. Any ideas?

[Fatal Error] :287:6: The processing instruction target matching "[xX][mM][lL]" is not allowed.
The log message is null.
org.xml.sax.SAXParseException: The processing instruction target matching "[xX][mM][lL]" is not allowed.
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:239)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:283)
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:124)
at com.sun.aph.bpel2svg.monitor.SessionBean1.getActivityName(SessionBean1.java:551)
at com.sun.aph.bpel2svg.monitor.SessionBean1.getProcessedActivities(SessionBean1.java:591)
at com.sun.aph.bpel2svg.monitor.SessionBean1.getProcessedActivities(SessionBean1.java:603)
at com.sun.aph.bpel2svg.monitor.BPELMonitorPage.generateSVG(BPELMonitorPage.java:381)
at com.sun.aph.bpel2svg.monitor.BPELMonitorPage.showSVGBtn_action(BPELMonitorPage.java:232)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.el.parser.AstValue.invoke(AstValue.java:187)
at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:297)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:77)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
at com.sun.rave.web.ui.appbase.faces.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
at javax.faces.component.UICommand.broadcast(UICommand.java:383)
at com.sun.webui.jsf.component.WebuiCommand.broadcast(WebuiCommand.java:160)
at com.sun.webui.jsf.component.TableRowGroupBase.broadcast(TableRowGroupBase.java:1402)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:447)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:752)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
at com.sun.faces.extensions.avatar.lifecycle.PartialTraversalLifecycle.execute(PartialTraversalLifecycle.java:94)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:411)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:317)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:198)
at com.sun.webui.jsf.util.UploadFilter.doFilter(UploadFilter.java:267)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:198)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:288)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:271)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:202)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:94)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:206)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:150)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:272)
at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:637)
at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:568)
at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:813)
at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:341)
at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:263)
at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:214)
at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:265)
at com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106)
java.lang.NullPointerException
javax.faces.el.EvaluationException: java.lang.NullPointerException
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:91)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
at com.sun.rave.web.ui.appbase.faces.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
at javax.faces.component.UICommand.broadcast(UICommand.java:383)
at com.sun.webui.jsf.component.WebuiCommand.broadcast(WebuiCommand.java:160)
at com.sun.webui.jsf.component.TableRowGroupBase.broadcast(TableRowGroupBase.java:1402)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:447)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:752)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
at com.sun.faces.extensions.avatar.lifecycle.PartialTraversalLifecycle.execute(PartialTraversalLifecycle.java:94)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:411)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:317)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:198)
at com.sun.webui.jsf.util.UploadFilter.doFilter(UploadFilter.java:267)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:198)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:288)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:271)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:202)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:94)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:206)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:150)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:272)
at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:637)
at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:568)
at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:813)
at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:341)
at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:263)
at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:214)
at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:265)
at com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106)
Caused by: java.lang.NullPointerException
at java.util.Hashtable.put(Hashtable.java:399)
at com.sun.aph.bpel2svg.monitor.SessionBean1.getProcessedActivities(SessionBean1.java:592)
at com.sun.aph.bpel2svg.monitor.SessionBean1.getProcessedActivities(SessionBean1.java:603)
at com.sun.aph.bpel2svg.monitor.BPELMonitorPage.generateSVG(BPELMonitorPage.java:381)
at com.sun.aph.bpel2svg.monitor.BPELMonitorPage.showSVGBtn_action(BPELMonitorPage.java:232)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.el.parser.AstValue.invoke(AstValue.java:187)
at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:297)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:77)
... 43 more
WebModule[/BPEL2SVGMonitorWebApplication]#{BPELMonitorPage.showSVGBtn_action}: java.lang.NullPointerException
javax.faces.FacesException: #{BPELMonitorPage.showSVGBtn_action}: java.lang.NullPointerException
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:107)
at com.sun.rave.web.ui.appbase.faces.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
at javax.faces.component.UICommand.broadcast(UICommand.java:383)
at com.sun.webui.jsf.component.WebuiCommand.broadcast(WebuiCommand.java:160)
at com.sun.webui.jsf.component.TableRowGroupBase.broadcast(TableRowGroupBase.java:1402)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:447)
at javax.faces.component.U

Posted by Dan on December 10, 2008 at 10:01 PM GMT #

I will take a look

Posted by guest on December 11, 2008 at 04:21 PM GMT #

Hi,

It looks pretty cool here, but for some reason I can't seem to get the browser to render it correctly - either on linux or on mac (using firefox or ie6). On process monitor tab I'm getting the bpel instance table correctly. The bpel activity is chopped - it shows the number of activities correctly, but the activities themselves are hidden. The nice SVG is not shown at all. Sometimes the navigation stops working, and then clicking the next page does not really advance pages, moving to the statistics tab fails, etc. I'm running that on glassfish v2.

Any idea?

Posted by zohar on December 15, 2008 at 06:39 AM GMT #

If you want to use IE you will need to install the Adobe SVGViewer http://www.adobe.com/support/downloads/product.jsp?product=46&platform=Windows this is because native IE does not support SVG. Also which version of firefox are you using I have noticed with FF3 that the pages do not display correctly but oddly enough they do in FF2. This appears to due to some incompatibility between Visual Web Pack and FF3.

Posted by guest on December 15, 2008 at 11:50 AM GMT #

I tried to deploy BPEL2SVGMonitorWebApplication.war into my Glassfish V2 server. But, while deploying I am getting a SQLException saying that table MONITORBPELINSTANCE does not exist.

I don't have this table in my bpelDB... do I have to run any DB scripts?

I also don't have following tables, MONITORBPELACTIVITY and SERVICEUNIT

Kindly help.

Posted by Petro on February 28, 2009 at 10:29 PM GMT #

Got it resolved, had to enable monitoring also. Thanks.

Posted by Petro on March 01, 2009 at 10:47 AM GMT #

Hi,

the http://blogs.sun.com/toxophily/resource/svg-generator/BPEL2SVGJavaLibrary.zip link shows me only the 404.

Posted by Johannes Holzer on July 09, 2009 at 12:41 AM GMT #

I've added the missing file

Posted by Andrew Hopkinson on July 14, 2009 at 06:03 AM GMT #

I've also hit the same error as in the first comment:
[#|2009-07-16T09:37:52.984+0100|SEVERE|sun-appserver2.1|com.sun.aph.bpel2svg.monitor.SessionBean1|_ThreadID=31;_ThreadName=httpSSLWorkerThread-8080-1;_RequestID=f35e4d3b-4440-4dc2-adf1-fdd97f1c8204;|The log message is null.
org.xml.sax.SAXParseException: The processing instruction target matching "[xX][mM][lL]" is not allowed.
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source)
at javax.xml.parsers.DocumentBuilder.parse(Unknown Source)
at com.sun.aph.bpel2svg.monitor.SessionBean1.getActivityName(SessionBean1.java:551)
at com.sun.aph.bpel2svg.monitor.SessionBean1.getProcessedActivities(SessionBean1.java:591)
at com.sun.aph.bpel2svg.monitor.SessionBean1.getProcessedActivities(SessionBean1.java:603)

Did you get anywhere finding a solution for this?

Posted by Yaytay on July 16, 2009 at 01:44 AM GMT #

I can't repro this at the moment but it could be a GlassFish / Visual Web Pack issue. I will build a VirtualBox image and give it another go. At least that way it will not be affected by what is currently installed on my machine. Their will be an update to this functionality in the near future when I finish the code but I will present that in a new blog entry

Posted by Andrew on July 22, 2009 at 05:29 AM GMT #

I have still not managed to repro this (using GlassFish ESB 2.1) so I have rebuilt the war and uploaded it along with a new zip of the project.

Posted by Andrew on August 05, 2009 at 03:25 AM GMT #

I have done some rationalisation to the BPEL Monitor and the updated version can be found in my blog entry http://blogs.sun.com/toxophily/entry/open_esb_tip_ajax_based

Posted by Andrew on October 07, 2009 at 05:06 AM GMT #

Post a Comment:
Comments are closed for this entry.
About

As a member of the Oracle A-Team we specialise in enabling and supporting the Oracle Fusion Middleware communities.

Search

Archives
« April 2014
MonTueWedThuFriSatSun
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
    
       
Today