ECL .NET Remoting

Good morning.

 

I was taking a brief look at the SDK ECL v9 documentation. There is a diagram which shows that the recommended way to interact with the BPM engine by means of ECL is, for third party applications, the ECL.WS web service.

 

However, if the v9 standard web client alone were to interact with the engine, the diagram shows that there is the possibily to bypass the whole ECL.WS layer and interact directly with the engine using .NET Remoting.

 

Since this is exactly the scenario of the process I'm developing (that is, a standard BPM v9 process with no use of third party applications), I was wondering how to invoke actions using ECL and .NET remoting alone.

 

If I got it right, the MetastormOperation class is used to interact using the ECL.WS, so what classes should I use if I wanted to  invoke actions using .NET Remoting alone?

 

Thank you,

 

Andrea D.P.

Tagged:

Comments

  • If web services is an option instead of remoting, you could set up a service reference endpoint and consume the service from code.

     

    The .net proxy classes that are generated will give you everything you need to communicate to the engine remotely. The object browser works best for inspecting the proxy classes, they are pretty self explanitory

     

    The web service is Http://<engine server name>/ECL.WS/Service.svc. It may need to be installed as an option, I don't remember.

     

    Example Code:

     

    MBPM92Test.BPMService.ServiceClient BPM = new ServiceClient();
    
                FormField[] logindata = new FormField[] {
                    new TextField() {Name = "username", Value="<valid user>"}, //where valid user is a user that can be authenticated in your system
                    new TextField() {Name = "password",  Value= "<password>"} //password. You can use encrypt classes to send plain text password or use the string from euser table
                };
    
                ServiceSessionState session = BPM.Login("WEB;", 0, "", logindata);
    
                
                ListResult list = BPM.GetList(session, ListContentsType.Blank, new ListFilter(), "", "", 1, 1);
    
                
    
                BPM.Logout(session);
    
  • Forgot invoking action code, this would invoke the action with out form interation.

     

    There are other action objects that would simulate, start action, commin action, cancel action, etc etc.

     

    This is also a lot cleaner then dealing with the TP directly like you had to in previous versions.

     

    ActionResponse actionresponse = BPM.StartAction(session, "0900000000000000000000000000008", "Name of Process", "Name of Action", true, new FormField[] { });
    
  • Hi James,

     

    thank you for your detailed answer.

     

    My question was actually more performance related: we thought that invoking an action though .NET Remoting would improve the overall process response time, since it should be much simpler than a web service call.

     

    Do you agree, or do you think the response time would be about the same? Or maybe invoking an action through the ECL.WS  web service is the safe way to go?

     

    Thank you,

     

    Andrea D.P.

  • Remoting will in most cases have better performance then a Web Serice call since remoting isn't affected by the same Network traffic WS calls are.

     

    However, the ECL.WS performance and response time has been very, very good for us. In most traces, we find our performance problems to be isolated to application logic or SQL processing.

     

    Rarely do we pinpoint performance issues on the ECL.WS. It is close to instantanous as it can get when running on the same server as the engine.

     

    Please feel free to contact me directly, -removed-

    ---
    Note: Some information in this post has been hidden to protect privacy.