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.

Problem with the import

Hello Everybody,

I have a problem with the libraries in org.processmining.framework.log.

When I import for instance the followings:

import org.processmining.framework.log.LogReader;
import org.processmining.framework.log.AuditTrailEntry;
import org.processmining.framework.log.AuditTrailEntryList;
import org.processmining.framework.log.LogEvent;

It doesn't recognize them and I tried to solve the problem but no vain. 

Could anyone help me solve this problem?  Thank you




Comments

  • It seems some package is missing. You can remove these lines if they are not useful. Otherwise, you have to find the package containing these files and add the package in the "Build Path".
    Guangming Li
    PhD student in Process Mining at Eindhoven University of Technology
  • rbigui
    edited February 2018
    thank u for the reply.  :smile: 
    org.processmining.framework is in the package ProM, however it doesn't contain org.processmining.framework.log. 

    Many Packages imported org.processmining.framework.log.for LogReader, LogEvent, ProcessInstance...

    But I couldn't find this package to add it to the build path  :(  :(  :(
  • kfgz087
    edited February 2018
    It seems these files (org.processmining.framework.log.for LogReader, LogEvent, ProcessInstance) are quite old. These files can be found at https://findusages.com/repository/RPvK2JZ9NFD9DV9ModEWXfpR?file=src/org/processmining/framework/log/LogEvent.java, which are not wrapped as a package.

    I do not know what you want to do based on these files. If you want to use some functions related to "log", you can refer to the library OpenXES, which contains abundant functions related to "log".
    Guangming Li
    PhD student in Process Mining at Eindhoven University of Technology
  • Thank you 
    I really appreciate your help.

    I would like to use AuditTrailEntryList like for example:

    ArrayList<Integer> traceTask = new ArrayList<Integer>();
    for (XTrace processInstance: log)
    {
    AuditTrailEntryList ateList = processInstance.getAuditTrailEntryList();

    AuditTrailEntryList can be imported from org.processmining.framework.log.* but since you said it is old and those files are not wrapped as a package,  do you have any idea of by which can I replace ''AuditTrailEntryList'' or a package from which I can import it?




  • kfgz087
    edited February 2018
    Hi rbigui,


    This function "getAuditTrailEntryList()" is used to read the event list of a trace in the context of "mxml" logs as shown in the above figure. 

    Current, the commonly used log format is "XES" as shown in the figure below.

    If not necessary, it is better to use the "XES" log format and all its related functions are in the library OpenXES (e.g., import org.deckfour.xes.model.XEvent;
    import org.deckfour.xes.model.XLog;
    import org.deckfour.xes.model.XTrace;).  

    The possible usage for your situation is like
    XTrace trace = log.get(i) to get a trace from a log and XEvent event = trace.get(j) to get a event from a trace.
    Guangming Li
    PhD student in Process Mining at Eindhoven University of Technology
  • rbigui
    edited February 2018
    Hi ^^

    Thank you so much for your clarification and help. I didn't know the AuditTrailEntry is only in MXML. Thank youu for the clarification.

    Based on your help, I tried to replace the usage of AuditTrailEntry to use OpenXES libraries, but I got some few errors. Could you please help me solve these errors. The errors are struck through in the code.

    If the log contains the followings traces {1=<..axycdb..>, 2=<..acdxyb..>, 3=<..axcydb..>, 4=<..acdb..>}. x, y are in parallel with c and d.
    I want the code to look for the trace number 4 <..acdb..> which contains only c and d between a and b and no appearance of x and y in this trace.

    {c , d} are represented in the code by tasks (HashSet<Integer> tasks)

    This is the code:
    private boolean checkExistPath(int a, int b, HashSet<Integer> tasks, XLog log, 
    XTrace trace, ArrayList<XTrace> selectedTrace, 
    ArrayList<Integer> selectedInterfereTask) {		
    int nostart = 0;
    int started = 1;
    int end = 2;
    ArrayList<Integer> traceTask = new ArrayList<Integer>();
    for (int i=0; i<log.size(); i++) {
    for (XTrace t: log){
      List<Event> eventList = trace.getEventsList();
    int tag = nostart;
    traceTask.clear(); //in each trace
    for (int j=0; j<eventList.size(); j++){
    try {
    String positionName = eventList.get(j).toString();
    int position = -1;
    for (int r=0; r<relations.getNumberElements(); r++)
    if (relations.getLogEvents().get(r).getModelElementName().equals(positionName))
    {
    position = r;
    break;
    }
    if (position == -1)
    continue;
    if (position == a)
    {
    tag = started;
    }
    else if(tag == started && position == b)
    {
    tag = end;
    }
    else if (tag == started && !tasks.contains(position))
    {
    tag = nostart;
    traceTask.clear();
    }
    else if (tag == started && tasks.contains(position))
    {
    traceTask.add(position);
    }
    }
    catch (IndexOutOfBoundsException | IOException e) 
    {
    e.printStackTrace();
    }
    }
    if (tag == end)
    {
    selectedTrace.add(t);
    selectedInterfereTask.addAll(traceTask);
    }
    }
    if (selectedTrace.size()>0)
    return true;
    return false;
    }   
    }

    I am looking for your help and thank you
  • Hi rbigui,

    This is a Java "code" quetion rather than a "process mining" question. I think you can serach the usage realted to the Java "list" class online to solve your problem.
    Guangming Li
    PhD student in Process Mining at Eindhoven University of Technology
Sign In or Register to comment.