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.

Trying to build R package for Business Process Mining using some alogrithms used in ProM Development

Hello all,

As a part of my project I am trying to build a R package useful for Business Process Analytics. So for that 
I want to use some of the core algorithms of the plugins of ProM. There is a package in R called rJava by which I can
create Java objects in R and call any method associated with that object from R . So by this I can run java code in
backend and compute the results. 

I have been observing and trying to understand the source codes used in the ProM develpment on the site for past 2 weeks. So from this I have learned that all the algorithms
of plugins are integrated with the GUI and GUI is mainly controlled by packages ProM-Contexts and ProM-Framework.

So I wanted to know that can I extract the core algorithms of the plugins and provide the inputs as the argument to 
the methods manually rather than using GUI? For example I want to convert a CSV into a XES file can I use the plugin
"Convert CSV to XES" by providing the input file name manually from my Code and get a XLog object and than export it 
as .xes file? 

I also need some help in understanding the structure of the source codes used in different packages. Like how can I know
which part of code is meant for GUI purpose so that I can change that and can give inputs manually.

Your help will mean a lot to me. Thank you in advance.

Also is there someone who is working for similar project for opensource and wants to collaborate? Then it will make work
easier for both of us.   


  • Hi,

    ProM Plug-ins are not necessarily integrated with the GUI, but some plug-ins will be.
    In this, the plug-in context plays an important role. Basically, ProM now knows three different such contexts:
    1. A GUI-aware context: UIPluginContext
    2. A headless (command-line interface) context: CLIPluginContext
    3. An abstract minimal context (that superclasses both others): PluginContext
    Plug-ins that are available in the 2nd and/or 3rd context, can be run without a GUI. Plug-ins that are only available in the first context can indeed only be run from a GUI-aware context.  

    To check in which context a plug-in can run, check the class of the plug-in's first parameter. If that happens to be UIPLuginContext, it needs a GUI to run.

    The "Convert CSV to XES" plug-in is only available in the first context, so it does require a GUI (to allow the user to configure the conversion properly). Nevertheless, this class does contain a method that takes a 3rd context: doConvertCSVtoXes (see the CSVConversionPlugin class). From you code, you could call this method, but of course you need to provide it with proper parameter values. 

    The structure of the sources may differ per package, as one developer may prefer the structure to be different as another developer. We do not enforce a certain structure, but rather have the developer work in the way he likes to work.
  • Dear Verbeek,

    Thank you very much for your prompt reply. Your information would be really helpful for me. :smile: 
Sign In or Register to comment.