To prevent spam users, you can only post on this forum after registration, which is by invitation. If you want to post on the forum, please send me a mail (h DOT m DOT w DOT verbeek AT tue DOT nl) and I'll send you an invitation in return for an account.

Command line interface for ProM plugins

Hi,

I want to run a ProM plugin with around 100 models and logs; doing this manually will take time.

Can I use the source code from SVN:

https://svn.win.tue.nl/repos/prom/Packages/

Does the version of plugins in the SVN are matched with ProM 6.9, which I use.?

Or Is there another way to do that?

Thank you
H.

Comments

  • hverbeekhverbeek Posts: 456
    Hi,

    There is an easy way to run ProM plugins from the command line by using the CLI (Command Line Interface) context. You can provide this context a script, which it then executes. As examples, you could have a look at https://www.win.tue.nl/~hverbeek/pdc2020/miners/, which lists a number of batch files and script files for running eight different miners from the command line.

    Note that in the scripts, you can call a plugin by its annotated name, see the examples.

    For each of these miners, the command-line call "Discover mylogfile.xes mymodel" would then import the log from the file "mylogfile.xes", it would run the miner on that log, which results in some model (Petri net, BPMN model, Log Skeleton, ...), and it would export that model into a file named "mymodel.ext", where ".ext" would differ per model (would be ".pnml" for Petri nets, ".bpmn" for BPMN models, and ".lsk" for Log Skeletons).

    The repository you refer to contains the current versions of all packages. Some of them will be newer than the version swhich are in ProM 6.9.

    I would *not* use ProM 6.9 to run ProM plugins this way. Unfortunately, ProM 6.9 contains a bug which may prevent you from running plugins this way. It may work several times, but it may also stall at some point in time. Please use either ProM 6.8 (in which the bug is not present) or the current ProM Nightly Build (in which the bug has been fixed).

    Kind regards,
    Eric.
  • hfkhammashhfkhammash Posts: 10
    edited September 17
    Hi Eric, 

    Thank you for your response  :smiley: ,

    I tried running the inductive miner by using CLI (the batch and scripts in your website), and it works perfectly. Thank you for sharing them. 

    I am now trying to use the same way to create CLI for RepairModel plugin developed by Drik Fahland. As far as I know, the plugin in ProM 6.9 produces a WF-net which the earlier versions do not guarantee. Thus, I am going to use ProM Nightly Build.
    I am just wondering how I can call the plugin. 
    Could you please point me to the way that I can call it and what are the 
    required parameters in addition to the model and log.
    I know that the plugin is packaged in Uma :
    org.processmining.modelrepair.plugins.Uma_RepairModel_Plugin;
    and the calling may look like: 
    Uma_RepairModel_Plugin repairer = new Uma_RepairModel_Plugin();
    result = repairer.repairModel_buildT2Econnection(pluginContext, xLog.getArtifact(), petriNet.getArtifact(), petriNet.getInitialMarking(), petriNet.getFinalMarking(), getConfiguration(), getXEventClassifier());
    Is this the correct way to do this?

    Thank you, 
    H.

    Post edited by hfkhammash on
  • hverbeekhverbeek Posts: 456
    Hi,

    No, that is not the way. You should use the annotated name of the plugin, which is "Repair Model". Then, change all uppercase characters by lowercase characters, and replace series of special characters by a single underscore. Hence, "Repair Model" becomes "repair_model":

    // A list of declarations to show the classes of these objects.
    XLog log;
    Petrinet net;
    Marking initialMarking;
    Marking finalMarking;
    RepairConfiguration configuration;
    XEventClassiifer classifier;

    // Call the plugin providing only the necessary parameter values.
    result = repair_model(log, net, initialMarking, finalMarking, configuration, classifier);

    // Get the results.
    net = result[0]; // The repaired net
    initialMarking = result[1]; // The repaired initial marking
    finalMarking = result[2]; // The repaired final marking

    Kind regards,
    Eric.



  • Hi Eric, 

    Thank you very much for clarifying the way to call the plugin, I appreciate your help :smiley: 

    Kind regards, 
    H.   
Sign In or Register to comment.