Package org.uengine.kernel

Source Code of org.uengine.kernel.DefaultActivityFilter

/*
* Created on 2004. 10. 9.
*/
package org.uengine.kernel;

import org.apache.bsf.*;
import org.metaworks.FieldDescriptor;
import org.metaworks.Type;
import org.metaworks.inputter.DateInput;

/**
* @author Jinyoung Jang
*/
public class DefaultActivityFilter implements ActivityFilter{
  private static final long serialVersionUID = org.uengine.kernel.GlobalContext.SERIALIZATION_UID;

  ActivityFilter activityFilter;
 
  public static void metaworksCallback_changeMetadata(Type type){
    FieldDescriptor fd = type.getFieldDescriptor("AfterExecuteScript");
    fd.setInputter(new DateInput());
  }
 
  protected void runScript(String script, Activity activity, ProcessInstance instance) throws BSFException{
    BSFManager manager = new BSFManager();
    manager.setClassLoader(this.getClass().getClassLoader());
 
    manager.declareBean("instance", instance, ProcessInstance.class);
    manager.declareBean("activity", activity, Activity.class);
//    manager.declareBean("globalContext", GlobalContext.getInstance(), GlobalContext.class);
    manager.declareBean("util", new ScriptUtil(), ScriptUtil.class);
   
    BSFEngine engine = manager.loadScriptingEngine("javascript");
     
    Object result = engine.eval("my_class.my_generated_method",0,0,"function getVal(){\n"+ script + "}\ngetVal();");
   
  }
 
  public void onDeploy(ProcessDefinition definition) throws Exception {
    // TODO Auto-generated method stub
  }
 
  public void afterComplete(Activity activity, ProcessInstance instance) throws Exception{
    if(isUseScript()){
      runScript(getAfterCompleteScript(), activity, instance);
    }else if(getFilterClass()!=null){
      if(activityFilter==null)
        try{
          activityFilter = (ActivityFilter)Class.forName(getFilterClass()).newInstance();
        }catch(Exception e){
          e.printStackTrace();
        }
     
      activityFilter.afterComplete(activity, instance);
    }
   
  }

  public void afterExecute(Activity activity, ProcessInstance instance)
    throws Exception {
    if(isUseScript()){
      runScript(getAfterExecuteScript(), activity, instance);
    }else if(getFilterClass()!=null){
      if(activityFilter==null)
        try{
          activityFilter = (ActivityFilter)Class.forName(getFilterClass()).newInstance();
        }catch(Exception e){
          e.printStackTrace();
        }
   
      activityFilter.afterExecute(activity, instance);
    }
  }

  public void beforeExecute(Activity activity, ProcessInstance instance) throws Exception{
    if(isUseScript()){
      runScript(getBeforeExecuteScript(), activity, instance);
    }else if(getFilterClass()!=null){
      if(activityFilter==null)
        try{
          activityFilter = (ActivityFilter)Class.forName(getFilterClass()).newInstance();
        }catch(Exception e){
          e.printStackTrace();
        }
     
      activityFilter.beforeExecute(activity, instance);
    }
  }

  String filterClass;
  String afterExecuteScript;
  String afterCompleteScript;
  String beforeExecuteScript;
  boolean useScript=true;
  String name;

  public String getAfterExecuteScript() {
    return afterExecuteScript;
  }

  public String getBeforeExecuteScript() {
    return beforeExecuteScript;
  }

  public String getFilterClass() {
    return filterClass;
  }

  public void setAfterExecuteScript(String string) {
    afterExecuteScript = string;
  }

  public void setBeforeExecuteScript(String string) {
    beforeExecuteScript = string;
  }

  public void setFilterClass(String class1) {
    filterClass = class1;
  }

  public boolean isUseScript() {
    return useScript;
  }

  public void setUseScript(boolean b) {
    useScript = b;
  }

  public String getName() {
    return name;
  }

  public void setName(String string) {
    name = string;
  }

  public String getAfterCompleteScript() {
    return afterCompleteScript;
  }

  public void setAfterCompleteScript(String string) {
    afterCompleteScript = string;
  }

  public void onPropertyChange(Activity activity, ProcessInstance instance, String propertyName, Object changedValue) throws Exception {
    if(isUseScript()){
//      runScript(getBeforeExecuteScript(), activity, instance);
    }else if(getFilterClass()!=null){
      if(activityFilter==null)
        try{
          activityFilter = (ActivityFilter)Class.forName(getFilterClass()).newInstance();
        }catch(Exception e){
          e.printStackTrace();
        }
     
      activityFilter.onPropertyChange(activity, instance, propertyName, changedValue);
    }
  }

}
TOP

Related Classes of org.uengine.kernel.DefaultActivityFilter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.