ref 16155: Enact DM Model Executor to automatically run a dataminer algorithm

https://support.d4science.org/issues/16155

Added automatic run

git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/data-miner-executor@178566 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Giancarlo Panichi 2019-03-13 10:53:59 +00:00
parent d7117f912e
commit 5ac7dc2039
14 changed files with 187 additions and 38 deletions

View File

@ -1,12 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<classpath> <classpath>
<classpathentry kind="src" output="target/data-miner-executor-1.0.0-SNAPSHOT/WEB-INF/classes" path="src/main/java"> <classpathentry kind="src" output="target/data-miner-executor-1.1.0-SNAPSHOT/WEB-INF/classes" path="src/main/java">
<attributes> <attributes>
<attribute name="optional" value="true"/> <attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/> <attribute name="maven.pomderived" value="true"/>
</attributes> </attributes>
</classpathentry> </classpathentry>
<classpathentry excluding="**" kind="src" output="target/data-miner-executor-1.0.0-SNAPSHOT/WEB-INF/classes" path="src/main/resources"> <classpathentry excluding="**" kind="src" output="target/data-miner-executor-1.1.0-SNAPSHOT/WEB-INF/classes" path="src/main/resources">
<attributes> <attributes>
<attribute name="maven.pomderived" value="true"/> <attribute name="maven.pomderived" value="true"/>
</attributes> </attributes>
@ -34,5 +34,5 @@
<attribute name="maven.pomderived" value="true"/> <attribute name="maven.pomderived" value="true"/>
</attributes> </attributes>
</classpathentry> </classpathentry>
<classpathentry kind="output" path="target/data-miner-executor-1.0.0-SNAPSHOT/WEB-INF/classes"/> <classpathentry kind="output" path="target/data-miner-executor-1.1.0-SNAPSHOT/WEB-INF/classes"/>
</classpath> </classpath>

View File

@ -1,9 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0"> <?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
<wb-module deploy-name="data-miner-executor-1.0.0-SNAPSHOT"> <wb-module deploy-name="data-miner-executor-1.1.0-SNAPSHOT">
<wb-resource deploy-path="/" source-path="/target/m2e-wtp/web-resources"/> <wb-resource deploy-path="/" source-path="/target/m2e-wtp/web-resources"/>
<wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/> <wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/> <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/> <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
<dependent-module archiveName="data-miner-manager-cl-1.6.0-SNAPSHOT.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/data-miner-manager-cl/data-miner-manager-cl">
<dependency-type>uses</dependency-type>
</dependent-module>
<property name="java-output-path" value="/data-miner-manager/target/data-miner-executor-1.0.0-SNAPSHOT/WEB-INF/classes"/> <property name="java-output-path" value="/data-miner-manager/target/data-miner-executor-1.0.0-SNAPSHOT/WEB-INF/classes"/>
<property name="context-root" value="data-miner-executor"/> <property name="context-root" value="data-miner-executor"/>
</wb-module> </wb-module>

View File

@ -1,4 +1,7 @@
<ReleaseNotes> <ReleaseNotes>
<Changeset component="${groupId}.${artifactId}.1-1-0" date="2019-03-13">
<Change>Added automatic run [ticket #16155]</Change>
</Changeset>
<Changeset component="${groupId}.${artifactId}.1-0-0" date="2019-01-31"> <Changeset component="${groupId}.${artifactId}.1-0-0" date="2019-01-31">
<Change>First release</Change> <Change>First release</Change>
</Changeset> </Changeset>

View File

@ -12,7 +12,7 @@
<groupId>org.gcube.portlets.user</groupId> <groupId>org.gcube.portlets.user</groupId>
<artifactId>data-miner-executor</artifactId> <artifactId>data-miner-executor</artifactId>
<version>1.0.0-SNAPSHOT</version> <version>1.1.0-SNAPSHOT</version>
<packaging>war</packaging> <packaging>war</packaging>
<name>data-miner-executor</name> <name>data-miner-executor</name>

View File

@ -3,7 +3,6 @@ package org.gcube.portlets.user.dataminerexecutor.client;
import org.gcube.data.analysis.dataminermanagercl.shared.data.OutputData; import org.gcube.data.analysis.dataminermanagercl.shared.data.OutputData;
import org.gcube.data.analysis.dataminermanagercl.shared.data.computations.ComputationData; import org.gcube.data.analysis.dataminermanagercl.shared.data.computations.ComputationData;
import org.gcube.data.analysis.dataminermanagercl.shared.data.computations.ComputationId; import org.gcube.data.analysis.dataminermanagercl.shared.data.computations.ComputationId;
import org.gcube.data.analysis.dataminermanagercl.shared.process.Operator;
import org.gcube.data.analysis.dataminermanagercl.shared.workspace.ItemDescription; import org.gcube.data.analysis.dataminermanagercl.shared.workspace.ItemDescription;
import org.gcube.portlets.user.dataminerexecutor.client.common.EventBusProvider; import org.gcube.portlets.user.dataminerexecutor.client.common.EventBusProvider;
import org.gcube.portlets.user.dataminerexecutor.client.events.CancelComputationExecutionRequestEvent; import org.gcube.portlets.user.dataminerexecutor.client.events.CancelComputationExecutionRequestEvent;
@ -29,6 +28,7 @@ import org.gcube.portlets.user.dataminerexecutor.client.util.InfoMessageBox;
import org.gcube.portlets.user.dataminerexecutor.client.util.UtilsGXT3; import org.gcube.portlets.user.dataminerexecutor.client.util.UtilsGXT3;
import org.gcube.portlets.user.dataminerexecutor.shared.Constants; import org.gcube.portlets.user.dataminerexecutor.shared.Constants;
import org.gcube.portlets.user.dataminerexecutor.shared.exception.SessionExpiredServiceException; import org.gcube.portlets.user.dataminerexecutor.shared.exception.SessionExpiredServiceException;
import org.gcube.portlets.user.dataminerexecutor.shared.process.InvocationModel;
import org.gcube.portlets.user.dataminerexecutor.shared.session.UserInfo; import org.gcube.portlets.user.dataminerexecutor.shared.session.UserInfo;
import com.allen_sauer.gwt.log.client.Log; import com.allen_sauer.gwt.log.client.Log;
@ -381,7 +381,7 @@ public class DataMinerExecutorController {
messageBox.show(); messageBox.show();
DataMinerExecutorServiceAsync.INSTANCE.getInvocationModel(invocationModelFileUrl, DataMinerExecutorServiceAsync.INSTANCE.getInvocationModel(invocationModelFileUrl,
new AsyncCallback<Operator>() { new AsyncCallback<InvocationModel>() {
@Override @Override
public void onFailure(Throwable caught) { public void onFailure(Throwable caught) {
@ -401,10 +401,10 @@ public class DataMinerExecutorController {
} }
@Override @Override
public void onSuccess(Operator operator) { public void onSuccess(InvocationModel invocationModel) {
messageBox.hide(); messageBox.hide();
Log.debug("Invocation Retrieved: " + operator); Log.debug("Invocation Retrieved: " + invocationModel);
InvocationModelEvent event = new InvocationModelEvent(operator); InvocationModelEvent event = new InvocationModelEvent(invocationModel);
Log.debug("Fire: " + event); Log.debug("Fire: " + event);
EventBusProvider.INSTANCE.fireEvent(event); EventBusProvider.INSTANCE.fireEvent(event);
} }

View File

@ -1,6 +1,6 @@
package org.gcube.portlets.user.dataminerexecutor.client.events; package org.gcube.portlets.user.dataminerexecutor.client.events;
import org.gcube.data.analysis.dataminermanagercl.shared.process.Operator; import org.gcube.portlets.user.dataminerexecutor.shared.process.InvocationModel;
import com.google.gwt.event.shared.EventHandler; import com.google.gwt.event.shared.EventHandler;
import com.google.gwt.event.shared.GwtEvent; import com.google.gwt.event.shared.GwtEvent;
@ -15,24 +15,21 @@ import com.google.gwt.event.shared.HasHandlers;
* *
* *
*/ */
public class InvocationModelEvent public class InvocationModelEvent extends GwtEvent<InvocationModelEvent.InvocationModelEventHandler> {
extends GwtEvent<InvocationModelEvent.InvocationModelEventHandler> {
public static Type<InvocationModelEventHandler> TYPE = new Type<InvocationModelEventHandler>(); public static Type<InvocationModelEventHandler> TYPE = new Type<InvocationModelEventHandler>();
private Operator operator; private InvocationModel invocationModel;
public interface InvocationModelEventHandler extends EventHandler { public interface InvocationModelEventHandler extends EventHandler {
void onInvocation(InvocationModelEvent event); void onInvocation(InvocationModelEvent event);
} }
public interface HasInvocationModelEventHandler extends HasHandlers { public interface HasInvocationModelEventHandler extends HasHandlers {
public HandlerRegistration addInvocationModelEventHandler( public HandlerRegistration addInvocationModelEventHandler(InvocationModelEventHandler handler);
InvocationModelEventHandler handler);
} }
public InvocationModelEvent(InvocationModel invocationModel) {
public InvocationModelEvent(Operator operator) { this.invocationModel = invocationModel;
this.operator=operator;
} }
@Override @Override
@ -53,14 +50,13 @@ public class InvocationModelEvent
source.fireEvent(event); source.fireEvent(event);
} }
public Operator getOperator() { public InvocationModel getInvocationModel() {
return operator; return invocationModel;
} }
@Override @Override
public String toString() { public String toString() {
return "InvocationModelEvent [operator=" + operator + "]"; return "InvocationModelEvent [invocationModel=" + invocationModel + "]";
} }
} }

View File

@ -6,6 +6,7 @@ import org.gcube.portlets.user.dataminerexecutor.client.events.ComputationReadyE
import org.gcube.portlets.user.dataminerexecutor.client.events.ComputationReadyEvent.ComputationReadyEventHandler; import org.gcube.portlets.user.dataminerexecutor.client.events.ComputationReadyEvent.ComputationReadyEventHandler;
import org.gcube.portlets.user.dataminerexecutor.client.events.ComputationReadyEvent.HasComputationReadyEventHandler; import org.gcube.portlets.user.dataminerexecutor.client.events.ComputationReadyEvent.HasComputationReadyEventHandler;
import org.gcube.portlets.user.dataminerexecutor.client.experiments.ComputationParametersPanel.ComputationParametersPanelHandler; import org.gcube.portlets.user.dataminerexecutor.client.experiments.ComputationParametersPanel.ComputationParametersPanelHandler;
import org.gcube.portlets.user.dataminerexecutor.shared.process.InvocationModel;
import com.google.gwt.event.shared.HandlerRegistration; import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.user.client.ui.Image; import com.google.gwt.user.client.ui.Image;
@ -131,8 +132,40 @@ public class ComputationPanel extends FramedPanel implements HasComputationReady
} }
public void addOperator(Operator operator) { public void addInvocation(InvocationModel invocationModel) {
computationParametersPanel = new ComputationParametersPanel(operator); computationParametersPanel = new ComputationParametersPanel(invocationModel.getOperator());
if(invocationModel.getInvocationAction()==null){
setReadyHandler();
} else {
switch(invocationModel.getInvocationAction()){
case EDIT:
setReadyHandler();
break;
case RUN:
automaticRun();
break;
case SHOW:
setReadyHandler();
break;
default:
setReadyHandler();
break;
}
}
}
private void automaticRun() {
addComputationParametersPanel(computationParametersPanel);
forceLayout();
Operator op = computationParametersPanel.getOperator();
ComputationReadyEvent event = new ComputationReadyEvent(op);
fireEvent(event);
}
private void setReadyHandler(){
computationParametersPanel.setHandler(new ComputationParametersPanelHandler() { computationParametersPanel.setHandler(new ComputationParametersPanelHandler() {
@Override @Override
public void startComputation() { public void startComputation() {
@ -147,7 +180,6 @@ public class ComputationPanel extends FramedPanel implements HasComputationReady
}); });
addComputationParametersPanel(computationParametersPanel); addComputationParametersPanel(computationParametersPanel);
} }

View File

@ -1,9 +1,9 @@
package org.gcube.portlets.user.dataminerexecutor.client.experiments; package org.gcube.portlets.user.dataminerexecutor.client.experiments;
import org.gcube.data.analysis.dataminermanagercl.shared.process.Operator;
import org.gcube.portlets.user.dataminerexecutor.client.common.EventBusProvider; import org.gcube.portlets.user.dataminerexecutor.client.common.EventBusProvider;
import org.gcube.portlets.user.dataminerexecutor.client.events.InvocationModelEvent; import org.gcube.portlets.user.dataminerexecutor.client.events.InvocationModelEvent;
//import org.gcube.portlets.user.dataminerexecutor.client.events.InvocationModelRequestEvent; //import org.gcube.portlets.user.dataminerexecutor.client.events.InvocationModelRequestEvent;
import org.gcube.portlets.user.dataminerexecutor.shared.process.InvocationModel;
import com.allen_sauer.gwt.log.client.Log; import com.allen_sauer.gwt.log.client.Log;
import com.sencha.gxt.core.client.util.Margins; import com.sencha.gxt.core.client.util.Margins;
@ -45,7 +45,7 @@ public class ExperimentPanel extends SimpleContainer {
@Override @Override
public void onInvocation(InvocationModelEvent event) { public void onInvocation(InvocationModelEvent event) {
Log.debug("Catch InvocationModelEvent: " + event); Log.debug("Catch InvocationModelEvent: " + event);
addOperator(event.getOperator()); addInvocation(event.getInvocationModel());
} }
@ -76,13 +76,13 @@ public class ExperimentPanel extends SimpleContainer {
* *
*/ */
private void addOperator(Operator operator) { private void addInvocation(InvocationModel invocationModel) {
//if (lastOperatorSelected != null //if (lastOperatorSelected != null
// && lastOperatorSelected != operatorPanel) // && lastOperatorSelected != operatorPanel)
// lastOperatorSelected.toggleSelected(false); // lastOperatorSelected.toggleSelected(false);
//if (lastOperatorSelected != operatorPanel) //if (lastOperatorSelected != operatorPanel)
// operatorPanel.toggleSelected(true); // operatorPanel.toggleSelected(true);
//lastOperatorSelected = operatorPanel; //lastOperatorSelected = operatorPanel;
workflowPanel.addOperator(operator); workflowPanel.addInvocation(invocationModel);
} }
} }

View File

@ -8,6 +8,7 @@ import org.gcube.portlets.user.dataminerexecutor.client.DataMinerExecutor;
import org.gcube.portlets.user.dataminerexecutor.client.common.EventBusProvider; import org.gcube.portlets.user.dataminerexecutor.client.common.EventBusProvider;
import org.gcube.portlets.user.dataminerexecutor.client.events.ComputationReadyEvent; import org.gcube.portlets.user.dataminerexecutor.client.events.ComputationReadyEvent;
import org.gcube.portlets.user.dataminerexecutor.client.events.ResubmitComputationExecutionEvent; import org.gcube.portlets.user.dataminerexecutor.client.events.ResubmitComputationExecutionEvent;
import org.gcube.portlets.user.dataminerexecutor.shared.process.InvocationModel;
import com.allen_sauer.gwt.log.client.Log; import com.allen_sauer.gwt.log.client.Log;
import com.sencha.gxt.widget.core.client.TabItemConfig; import com.sencha.gxt.widget.core.client.TabItemConfig;
@ -104,9 +105,9 @@ public class WorkflowPanel extends TabPanel {
} }
public void addOperator(Operator op) { public void addInvocation(InvocationModel invocationModel) {
setActiveWidget(computationPanel); setActiveWidget(computationPanel);
computationPanel.addOperator(op); computationPanel.addInvocation(invocationModel);
} }

View File

@ -13,6 +13,7 @@ import org.gcube.data.analysis.dataminermanagercl.shared.process.OperatorsClassi
import org.gcube.data.analysis.dataminermanagercl.shared.workspace.DataMinerWorkArea; import org.gcube.data.analysis.dataminermanagercl.shared.workspace.DataMinerWorkArea;
import org.gcube.data.analysis.dataminermanagercl.shared.workspace.ItemDescription; import org.gcube.data.analysis.dataminermanagercl.shared.workspace.ItemDescription;
import org.gcube.portlets.user.dataminerexecutor.shared.exception.ServiceException; import org.gcube.portlets.user.dataminerexecutor.shared.exception.ServiceException;
import org.gcube.portlets.user.dataminerexecutor.shared.process.InvocationModel;
import org.gcube.portlets.user.dataminerexecutor.shared.session.UserInfo; import org.gcube.portlets.user.dataminerexecutor.shared.session.UserInfo;
import com.google.gwt.user.client.rpc.RemoteService; import com.google.gwt.user.client.rpc.RemoteService;
@ -54,6 +55,6 @@ public interface DataMinerExecutorService extends RemoteService {
public ItemDescription getItemDescription(String itemId) throws ServiceException; public ItemDescription getItemDescription(String itemId) throws ServiceException;
public Operator getInvocationModel(String invocationModelFileUrl) throws ServiceException; public InvocationModel getInvocationModel(String invocationModelFileUrl) throws ServiceException;
} }

View File

@ -12,6 +12,7 @@ import org.gcube.data.analysis.dataminermanagercl.shared.process.Operator;
import org.gcube.data.analysis.dataminermanagercl.shared.process.OperatorsClassification; import org.gcube.data.analysis.dataminermanagercl.shared.process.OperatorsClassification;
import org.gcube.data.analysis.dataminermanagercl.shared.workspace.DataMinerWorkArea; import org.gcube.data.analysis.dataminermanagercl.shared.workspace.DataMinerWorkArea;
import org.gcube.data.analysis.dataminermanagercl.shared.workspace.ItemDescription; import org.gcube.data.analysis.dataminermanagercl.shared.workspace.ItemDescription;
import org.gcube.portlets.user.dataminerexecutor.shared.process.InvocationModel;
import org.gcube.portlets.user.dataminerexecutor.shared.session.UserInfo; import org.gcube.portlets.user.dataminerexecutor.shared.session.UserInfo;
import com.google.gwt.core.client.GWT; import com.google.gwt.core.client.GWT;
@ -58,6 +59,6 @@ public interface DataMinerExecutorServiceAsync {
void getItemDescription(String itemId, AsyncCallback<ItemDescription> asyncCallback); void getItemDescription(String itemId, AsyncCallback<ItemDescription> asyncCallback);
void getInvocationModel(String invocationModelFileUrl, AsyncCallback<Operator> callback); void getInvocationModel(String invocationModelFileUrl, AsyncCallback<InvocationModel> callback);
} }

View File

@ -19,6 +19,7 @@ import org.gcube.data.analysis.dataminermanagercl.shared.process.Operator;
import org.gcube.data.analysis.dataminermanagercl.shared.process.OperatorsClassification; import org.gcube.data.analysis.dataminermanagercl.shared.process.OperatorsClassification;
import org.gcube.data.analysis.dataminermanagercl.shared.workspace.DataMinerWorkArea; import org.gcube.data.analysis.dataminermanagercl.shared.workspace.DataMinerWorkArea;
import org.gcube.data.analysis.dataminermanagercl.shared.workspace.ItemDescription; import org.gcube.data.analysis.dataminermanagercl.shared.workspace.ItemDescription;
import org.gcube.data.analysis.dminvocation.ActionType;
import org.gcube.data.analysis.dminvocation.model.DataMinerInvocation; import org.gcube.data.analysis.dminvocation.model.DataMinerInvocation;
import org.gcube.data.analysis.dminvocation.model.DataMinerParam; import org.gcube.data.analysis.dminvocation.model.DataMinerParam;
import org.gcube.portlets.user.dataminerexecutor.client.rpc.DataMinerExecutorService; import org.gcube.portlets.user.dataminerexecutor.client.rpc.DataMinerExecutorService;
@ -27,6 +28,8 @@ import org.gcube.portlets.user.dataminerexecutor.server.storage.StorageUtil;
import org.gcube.portlets.user.dataminerexecutor.server.util.DataMinerWorkAreaManager; import org.gcube.portlets.user.dataminerexecutor.server.util.DataMinerWorkAreaManager;
import org.gcube.portlets.user.dataminerexecutor.server.util.TableReader; import org.gcube.portlets.user.dataminerexecutor.server.util.TableReader;
import org.gcube.portlets.user.dataminerexecutor.shared.exception.ServiceException; import org.gcube.portlets.user.dataminerexecutor.shared.exception.ServiceException;
import org.gcube.portlets.user.dataminerexecutor.shared.process.InvocationAction;
import org.gcube.portlets.user.dataminerexecutor.shared.process.InvocationModel;
import org.gcube.portlets.user.dataminerexecutor.shared.session.UserInfo; import org.gcube.portlets.user.dataminerexecutor.shared.session.UserInfo;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -118,7 +121,7 @@ public class DataMinerExecutorServiceImpl extends RemoteServiceServlet implement
} }
@Override @Override
public Operator getInvocationModel(String invocationModelFileUrl) throws ServiceException { public InvocationModel getInvocationModel(String invocationModelFileUrl) throws ServiceException {
try { try {
HttpServletRequest httpRequest = this.getThreadLocalRequest(); HttpServletRequest httpRequest = this.getThreadLocalRequest();
ServiceCredentials serviceCredentials = SessionUtil.getServiceCredentials(httpRequest); ServiceCredentials serviceCredentials = SessionUtil.getServiceCredentials(httpRequest);
@ -131,7 +134,27 @@ public class DataMinerExecutorServiceImpl extends RemoteServiceServlet implement
throw new ServiceException("Invalid Invocation, operator id not found!"); throw new ServiceException("Invalid Invocation, operator id not found!");
} }
InvocationAction invocationAction;
ActionType actionType=dmInvocation.getActionType();
if(actionType==null){
invocationAction=InvocationAction.SHOW;
} else {
switch(actionType){
case EDIT:
invocationAction=InvocationAction.SHOW;
break;
case RUN:
invocationAction=InvocationAction.RUN;
break;
default:
invocationAction=InvocationAction.SHOW;
break;
}
}
if (dmInvocation.getParameters() == null || dmInvocation.getParameters().getInput() == null if (dmInvocation.getParameters() == null || dmInvocation.getParameters().getInput() == null
|| dmInvocation.getParameters().getInput().getListParam() == null || dmInvocation.getParameters().getInput().getListParam() == null
|| dmInvocation.getParameters().getInput().getListParam().isEmpty()) { || dmInvocation.getParameters().getInput().getListParam().isEmpty()) {
@ -178,7 +201,10 @@ public class DataMinerExecutorServiceImpl extends RemoteServiceServlet implement
operator.setOperatorParameters(inputParametersFilled); operator.setOperatorParameters(inputParametersFilled);
return operator; InvocationModel invocationModel=new InvocationModel(invocationAction,operator);
return invocationModel;
} catch (ServiceException e) { } catch (ServiceException e) {
logger.error(e.getLocalizedMessage()); logger.error(e.getLocalizedMessage());
throw e; throw e;

View File

@ -0,0 +1,36 @@
package org.gcube.portlets.user.dataminerexecutor.shared.process;
/**
*
* @author Giancarlo Panichi
*
*
*/
public enum InvocationAction {
SHOW("show"),
EDIT("edit"),
RUN("run");
private String action;
/**
* Instantiates a new action type.
*
* @param action the action
*/
InvocationAction(String action){
this.action = action;
}
/**
* Gets the action.
*
* @return the action
*/
public String getAction() {
return action;
}
}

View File

@ -0,0 +1,50 @@
package org.gcube.portlets.user.dataminerexecutor.shared.process;
import java.io.Serializable;
import org.gcube.data.analysis.dataminermanagercl.shared.process.Operator;
/**
*
* @author Giancarlo Panichi
*
*
*/
public class InvocationModel implements Serializable {
private static final long serialVersionUID = -6912479380989389840L;
private InvocationAction invocationAction;
private Operator operator;
public InvocationModel() {
super();
}
public InvocationModel(InvocationAction invocationAction, Operator operator) {
super();
this.operator = operator;
this.invocationAction = invocationAction;
}
public Operator getOperator() {
return operator;
}
public void setOperator(Operator operator) {
this.operator = operator;
}
public InvocationAction getInvocationAction() {
return invocationAction;
}
public void setInvocationAction(InvocationAction invocationAction) {
this.invocationAction = invocationAction;
}
@Override
public String toString() {
return "InvocationModel [invocationAction=" + invocationAction + ", operator=" + operator + "]";
}
}