IBM webMethods Hybrid Integration

IBM webMethods Hybrid Integration

Join this online group to communicate across IBM product users and experts by sharing advice and best practices with peers and staying up to date regarding product enhancements.

 View Only
Expand all | Collapse all

Process instance graph on a custom portlet

  • 1.  Process instance graph on a custom portlet

    Posted Wed October 06, 2010 12:45 PM

    Hi,

    How can I show on my own portlet view the process instance graph?
    I tried to use the portlet include with portlet /portlet/wm_process_graph___processgraph but it keeps throwing an error.
    The error is misleading because I can see the process instance if I follow the usual path on MWS: Monitoring → Business → Process Instances.

    Thanks,
    Bruno

    java.sql.SQLException: Process Instance 04a7c432-4b9c-422d-ac71-faa047f06a9a not found
    at com.webMethods.bpm.process.impl.db.common.LoadProcess.executeQuery(LoadProcess.java:25)
    at com.webMethods.portal.service.sql.core.BaseSqlWorker.executeQueryProcResult(BaseSqlWorker.java:667)
    at com.webMethods.portal.service.sql.core.BaseSqlWorker.executeQueryProcResult(BaseSqlWorker.java:632)
    at com.webMethods.bpm.process.impl.BpmProcess.load(BpmProcess.java:348)
    at com.webMethods.bpm.process.impl.BpmProcessManager.getProcess(BpmProcessManager.java:186)
    at com.webMethods.caf.processgraph.ProcessGraphDefaultviewView.getBpmProcess(ProcessGraphDefaultviewView.java:49)
    at com.webMethods.caf.processgraph.ProcessGraphDefaultviewView.getAnnotationJS(ProcessGraphDefaultviewView.java:148)
    at sun.reflect.GeneratedMethodAccessor1929.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at javax.el.BeanELResolver.getValue(BeanELResolver.java:261)
    at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:143)
    at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:72)
    at com.sun.el.parser.AstValue.getValue(AstValue.java:138)
    at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:206)
    at com.sun.faces.application.ValueBindingValueExpressionAdapter.getValue(ValueBindingValueExpressionAdapter.java:113)
    at com.webMethods.caf.faces.application.CAFValueBinding.getValue(CAFValueBinding.java:57)
    at javax.faces.component.ValueExpressionValueBindingAdapter.getValue(ValueExpressionValueBindingAdapter.java:84)
    at javax.faces.component.UIOutput.getValue(UIOutput.java:184)
    at com.webMethods.caf.faces.render.BaseRenderer.getValue(BaseRenderer.java:101)
    at com.webMethods.caf.faces.render.html.output.ScriptRenderer.writeSrc(ScriptRenderer.java:41)
    at com.webMethods.caf.faces.render.html.output.ScriptRenderer.encodeEnd(ScriptRenderer.java:29)
    at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:861)
    at com.webMethods.caf.faces.component.util.ComponentUtils.renderComponent(ComponentUtils.java:91)
    at com.webMethods.caf.faces.component.util.ComponentUtils.renderComponent(ComponentUtils.java:88)
    at com.webMethods.caf.faces.view.BaseViewHandler.renderResponse(BaseViewHandler.java:258)
    at com.webMethods.caf.faces.view.BaseViewHandler.renderView(BaseViewHandler.java:124)
    at com.webMethods.caf.faces.portlet.PortletLifecycle$RenderResponsePhase.execute(PortletLifecycle.java:700)
    at com.webMethods.caf.faces.portlet.PortletLifecycle.phase(PortletLifecycle.java:256)
    at com.webMethods.caf.faces.portlet.PortletLifecycle.render(PortletLifecycle.java:185)
    at com.webMethods.caf.faces.portlet.FacesPortlet.render(FacesPortlet.java:336)


    #webMethods
    #webMethods-BPMS
    #MWS-CAF-Task-Engine


  • 2.  RE: Process instance graph on a custom portlet

    Posted Wed October 06, 2010 11:26 PM

    What you are attempting to do should work, but the Monitor team doesn’t support this usage pattern. In other words, they don’t document what parameters need to be set on the portlet in order for it to be rendered. Additionally, no testing has occurred where they determine if their portlets can be embedded into custom CAF Applications.

    If I needed to embed their portlet, i would go to an instance of their portlet that is functioning, and try to determine all of that portlets properties. One way to do that would be to save that portlet to a workspace, and then using the Admin View in Designer, examine all the properties of the portlet.

    However, I haven’t tried this myself and I know the Monitor team hasn’t attempted this.

    Regards,
    –mark


    #MWS-CAF-Task-Engine
    #webMethods-BPMS
    #webMethods


  • 3.  RE: Process instance graph on a custom portlet

    Posted Thu October 21, 2010 12:24 PM

    Hi,

    Although I followed your advice I’m still facing the same problem.
    Is there an official approach on how to show the process diagram on a custom portlet?

    Thanks
    Bruno


    #webMethods-BPMS
    #webMethods
    #MWS-CAF-Task-Engine


  • 4.  RE: Process instance graph on a custom portlet

    Posted Thu October 21, 2010 04:03 PM

    No there isn’t an official approach. I’m sorry to hear that the experiment wasn’t successful.

    Regards,
    –mark


    #webMethods
    #webMethods-BPMS
    #MWS-CAF-Task-Engine


  • 5.  RE: Process instance graph on a custom portlet

    Posted Mon October 25, 2010 10:32 AM

    Hi,

    thanks Mark.

    In the meantime I was able to go a little further (by using another portlet: wm_bam_instance___image) and now I don’t get the error. But, I still don’t don’t see the process.

    I have compared both my custom portlet and a working version of the wm_bam_instance___image portlet added into a workspace and the html is different.

    I have attached the the div part were they differ. Check lines 33.
    It seems the flash object on the bad one is simply missing!

    Any ideas?

    Thanks
    Bruno
    bad.txt (3.3 KB)
    good.txt (2.95 KB)


    #MWS-CAF-Task-Engine
    #webMethods
    #webMethods-BPMS


  • 6.  RE: Process instance graph on a custom portlet

    Posted Mon October 25, 2010 05:18 PM

    Hi,

    One step further: it wasn’t loading the flash because the parent hideable panel had the lazy load feature enabled.

    Now, I’m including the portlet within my custom portlet by using the “portlet include” control with the following parameters:
    → instanceId
    → modelId
    → deployVersion
    → modelType
    → endpointUrl

    All these fields are correctly set.
    While loading the portlet, MWS calls 2 web services: getProcessModelXML and getImageInfo but the first one (getProcessModelXML) fails because modelId input field is null. This is odd because the field is also used for the second web service and in that case the field is set!

    Any help?
    Thanks
    Bruno


    #webMethods-BPMS
    #MWS-CAF-Task-Engine
    #webMethods


  • 7.  RE: Process instance graph on a custom portlet

    Posted Thu November 11, 2010 04:59 PM

    I think I figured out why your portlet inclusion of the process image portlet does not work. I think the BAM image portlet has an internal defect in how handles bindings to the web service connectors: it manages bindings to getProcessImage in the right way, but fails to do properly for getProcessXML.

    The reason the portlet works in the standard page is because, when these bindings fail, the resolution goes to GET parameters passed in the URL. Just take the example you are attempting now, and add to it a GET parameter “?modelId=”. It should work.

    Hence, a way of solving this is, when a new modelId is entered, do a redirect from inside an action, so that the URL is rewritten to include this modelId. I am including an example of this, which is composed of:
    -A portlet (showProcessModelP2) that incudes the process image one
    -A MWS page (public folder) that in turn includes the showProcessModelP2 portlet, and binds to it the global configuration of Monitor for the IS URL. Currently I am binding this configuration to Folders > My webMethods Applications > Fabric Tasks > Administration > My webMethods > System Settings > Servers > System Settings , and then the monitorEndpointUrl property. However I actually do not know whether this setting is right, whether it works, or whether by default it just takes localhost:5555, because at runtime it just shows “”. However, if you need other value, you can use e.g. environment variables to configure it.

    I am enclosing both the Designer project and the deployable war file, which includes the creation of the page (public folder) and the alias, so after deploying it you can go straight to /myShowProcessModel2 and see the portlet. Please use the Administrator account, since I suspect it will only work if the current MWS user has permissions in IS to call these services.

    Hope this helps. Best regards
    showProcessModel-prjAndWar.zip (19.3 KB)


    #webMethods
    #webMethods-BPMS
    #MWS-CAF-Task-Engine


  • 8.  RE: Process instance graph on a custom portlet

    Posted Fri November 19, 2010 09:40 AM

    Hi Javier,

    just to tell you that it worked.
    thanks a lot.

    Bruno


    #webMethods-BPMS
    #MWS-CAF-Task-Engine
    #webMethods


  • 9.  RE: Process instance graph on a custom portlet

    Posted Thu December 02, 2010 07:10 AM

    Hi,
    Thax.this post helps alot.But Administrator only can now see the process graph ,no other project specific user can see this.Any permission I need to add that any project specific user can see the same.
    This is urgent requirement.


    #MWS-CAF-Task-Engine
    #webMethods
    #webMethods-BPMS


  • 10.  RE: Process instance graph on a custom portlet

    Posted Thu November 15, 2012 07:16 AM

    I tried displaying process instance image on 8.2 by providing 3 parameters instanceId, modelId, deployVersion to portlet /portlet/wm_bam_instance___image inside portletInclude control but it gives binding error -->Failed to evaluate binding expression: “#{activePageBean.drilldownJS}”. Is there anyway to get hold of source code of system portlet or am i missing something because i gave all necessary permission to user to view business process and added them to monitor Administrator ACL and monitor user ACL. Any pointer would be of great help.

    Thanks in advance.


    #webMethods
    #webMethods-BPMS
    #MWS-CAF-Task-Engine


  • 11.  RE: Process instance graph on a custom portlet

    Posted Wed November 28, 2012 11:47 AM

    You may use the generateInstanceImage service. The service returns an IS url.

    Hope this help.

    Regards.


    #webMethods
    #webMethods-BPMS
    #MWS-CAF-Task-Engine