starting V9 process with ECL

I need to start processes (blank form actions) from a C# application. But I don't want to use the process activator. I didn't find anyting in the SDK documentation. There is only described how to handly already startet folders. How can I do that? Thanks in advance...

Tagged:

Comments

  • I can't speak to ECL specifics, but I'd think at a minimum you'd be able to raise a flag to start a process.  I know it can be done via command line, and indirectly via a BPM stored procedure call.  I'd think it would be possible via ECL as well.

  • The thing is I don't want to modify any process. It should be possible to start the application, connect to a Metastorm server, select a process and then start it.

  • Hi

     

    You can process a blank form action in the same way as a folder action but without a FolderID.

     

    Here is a simple example (using ECL.WS) of processing a blank form, passing some data to a text field:

     

    try
    {
        ActionResponse startResponse = _mbpm.StartAction(
                        _session,
                        string.Empty, // blank form so we don't pass a folder ID
                        "MyProcessName",
                        "MyBlankFormActionName",
                        false,
                        null);
    
        Action action = startResponse.Action;
    
        ((TextField)action.Fields.First(o => o.Name == "MyTextField")).Value = "Hello";
    
        // submit the action
        ActionResponse submitResponse = _mbpm.SubmitAction(_session, action.FolderID, action.Name, action.FormName, action.ServerData, action.Fields.ToArray());
    
        // get the ID of the created Folder
        string folderId = startResponse.Action.FolderID;
    }
    catch (System.ServiceModel.FaultException<OperationsFaultContract> ex)
    {
        // get the error messages from the engine...
        string engineErrorMessages = string.Join(",", ex.Detail.m_messages);
    
        // do something with the error messages…                
    }
    

     

    The above snippet assumes you've already got a session via the ECL... _mbpm is an instance of ServiceClient and _session is the ServiceSessionState returned by the Login method.

     

    Hope that helps

     

    iain

  • Hello BMellert

    Do you know some supported stored procedure to make an action in mbpm?

    Could you post some example?

  • (Now that I am finally able to connect to this forum again ....)

     

    I mentioned two possible methods, and an ECL option was listed elsewhere.

     

    eRaiseFlag can be called at the OS level, passing applicable parameters.

     

    There is also a BPM installed database procedure named esp_eRaisedFlag_insert which I use in some places which insert values into eRaisedFlag for processing.  However it does not automatically cause the engine to process the flag.  A separate/normal engine event needs to occur for the engine to process the flags inserted into the table.  We accomplish this by calling a "dummy" (no flag by the dummy name used) raise flag.  This causes the engine to check the table and process any outstanding data.

     

    Not an ideal solution, but is one possible method.