use of com.centurylink.mdw.model.value.variable.DocumentReference in project mdw-designer by CenturyLinkCloud.
the class DesignerDataAccess method updateVariableInstanceThruServer.
public void updateVariableInstanceThruServer(VariableInstanceInfo var, String value, boolean isDocument) throws RemoteException, DataAccessException {
if (this.dbSchemaVersion < 5000 && isDocument) {
// temporary work-around by updating database directly
// need to enhance 4.5 code to handle document variables
DocumentReference docref = new DocumentReference(var.getStringValue());
rtinfo.updateDocumentContent(docref.getDocumentId(), value);
} else {
DomDocument domdoc = new DomDocument();
FormatDom fmter = new FormatDom();
domdoc.getRootNode().setName("_mdw_update_variable");
MbengNode node = domdoc.newNode("var_value", value, "", ' ');
domdoc.getRootNode().appendChild(node);
if (var.getInstanceId() == null) {
node = domdoc.newNode("var_name", var.getName(), "", ' ');
domdoc.getRootNode().appendChild(node);
node = domdoc.newNode("proc_inst_id", var.getStringValue(), "", ' ');
domdoc.getRootNode().appendChild(node);
String res = this.engineCall(fmter.format(domdoc));
if (res.startsWith("OK:")) {
String[] vs = res.split(":");
var.setInstanceId(new Long(vs[1]));
if (vs.length == 3) {
DocumentReference docref = new DocumentReference(new Long(vs[2]), null);
var.setStringValue(docref.toString());
}
} else
throw new DataAccessException(res);
} else {
node = domdoc.newNode("var_inst_id", var.getInstanceId().toString(), "", ' ');
domdoc.getRootNode().appendChild(node);
String res = this.engineCall(fmter.format(domdoc));
if (!"OK".equals(res))
throw new DataAccessException(res);
}
}
auditLog(Action.Create, Entity.VariableInstance, var.getInstanceId(), var.getName());
}
use of com.centurylink.mdw.model.value.variable.DocumentReference in project mdw-designer by CenturyLinkCloud.
the class DesignerDataAccess method updateVariableInstanceInDb.
public void updateVariableInstanceInDb(VariableInstanceInfo varInstInfo, String newValue, boolean isDocument) throws DataAccessException {
// needs a separate db connection for some reason?
DatabaseAccess db = new DatabaseAccess(currentServer.getDatabaseUrl());
try {
RuntimeDataAccess runtimeDao = DataAccess.getRuntimeDataAccess(dbSchemaVersion, dbSupportedSchemaVersion, db, getVariableTypes());
db.openConnection();
if (isDocument) {
DocumentReference docRef = (DocumentReference) varInstInfo.getData();
runtimeDao.updateDocumentContent(docRef.getDocumentId(), newValue);
} else {
varInstInfo.setStringValue(newValue);
runtimeDao.updateVariableInstance(varInstInfo);
}
} catch (SQLException ex) {
throw new DataAccessException(-1, ex.getMessage(), ex);
} finally {
db.closeConnection();
}
auditLog(Action.Change, Entity.VariableInstance, varInstInfo.getInstanceId(), varInstInfo.getName());
}
use of com.centurylink.mdw.model.value.variable.DocumentReference in project mdw-designer by CenturyLinkCloud.
the class DesignerProxy method getVariableInfo.
/**
* Must be called from the UI thread.
*/
public VariableTypeVO getVariableInfo(final VariableInstanceInfo varInstInfo) {
String varType = varInstInfo.getType();
VariableTranslator varTrans = getVariableTranslator(varType);
final VariableTypeVO varTypeVO = new VariableTypeVO(0L, varType, varTrans == null ? null : varTrans.getClass().getName());
if (varInstInfo.getStringValue() != null && varTypeVO.isJavaObjectType()) {
BusyIndicator.showWhile(MdwPlugin.getShell().getDisplay(), new Runnable() {
public void run() {
DocumentReference docRef = new DocumentReference(varInstInfo.getStringValue());
try {
Object obj = new JavaObjectTranslator().realToObject(getDocument(docRef).getContent());
varTypeVO.setVariableType(obj.getClass().getName());
varTypeVO.setUpdateable(obj instanceof SelfSerializable);
} catch (TranslationException ex) {
if (MdwPlugin.getSettings().isLogConnectErrors())
PluginMessages.log(ex);
try {
if (!project.checkRequiredVersion(6, 1, 1)) {
String path = "DocumentValue?format=xml&id=" + docRef.getDocumentId() + "&type=" + varTypeVO.getVariableType();
String resp = getRestfulServer().invokeResourceService(path);
Resource res = Resource.Factory.parse(resp, Compatibility.namespaceOptions());
for (Parameter param : res.getParameterList()) {
if ("className".equals(param.getName()))
varTypeVO.setVariableType(param.getStringValue());
else if ("isUpdateable".equals(param.getName()))
varTypeVO.setUpdateable(Boolean.parseBoolean(param.getStringValue()));
}
}
} catch (Exception ex2) {
throw new RuntimeException(ex2.getMessage(), ex2);
}
}
}
});
}
return varTypeVO;
}
use of com.centurylink.mdw.model.value.variable.DocumentReference in project mdw-designer by CenturyLinkCloud.
the class DesignerProxy method getVariableValue.
/**
* Must be called from the UI thread.
*/
public String getVariableValue(final Shell shell, final VariableInstanceInfo varInstInfo, final boolean tryServer) {
final StringBuilder valueHolder = new StringBuilder();
BusyIndicator.showWhile(shell.getDisplay(), new Runnable() {
public void run() {
String value = varInstInfo.getStringValue();
if (value != null) {
boolean isDoc = isDocumentVariable(varInstInfo.getType(), value);
if (isDoc) {
DocumentReference docRef = new DocumentReference(value);
DocumentVO docVo = getDocument(docRef);
if (docVo != null) {
value = docVo.getContent();
boolean isJavaObj = Object.class.getName().equals(varInstInfo.getType());
if (isJavaObj) {
try {
value = new JavaObjectTranslator().realToObject(value).toString();
} catch (TranslationException ex) {
if (MdwPlugin.getSettings().isLogConnectErrors())
PluginMessages.log(ex);
if (tryServer) {
try {
String path = "DocumentValues/" + docRef.getDocumentId();
if (!project.checkRequiredVersion(6, 1, 1))
path = "DocumentValue?id=" + docRef.getDocumentId() + "&type=" + varInstInfo.getType() + "&format=text";
value = getRestfulServer().invokeResourceService(path);
} catch (Exception ex2) {
throw new RuntimeException(ex2.getMessage(), ex2);
}
} else {
value = "<Double-click to retrieve>";
}
}
}
}
}
valueHolder.append(value);
}
}
});
return valueHolder.toString();
}
use of com.centurylink.mdw.model.value.variable.DocumentReference in project mdw-designer by CenturyLinkCloud.
the class ProcessCanvasWrapper method buildPopupMenu.
/**
* Needs to run on the SWT UI thread.
*/
private Menu buildPopupMenu(final int x, final int y) {
if (popupMenu != null)
popupMenu.dispose();
popupMenu = new Menu(getParent().getShell(), SWT.POP_UP);
if (!isInstance()) {
if (designerCanvasSelection instanceof WorkflowProcess) {
if (process.getPackage() != null && process.isUserAuthorized(UserRoleVO.ASSET_DESIGN)) {
// save as
MenuItem saveAsItem = new MenuItem(popupMenu, SWT.PUSH);
saveAsItem.setText("Save as...");
ImageDescriptor propsImageDescForSave = MdwPlugin.getImageDescriptor("icons/save.gif");
saveAsItem.setImage(propsImageDescForSave.createImage());
saveAsItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
saveProcessAs();
}
});
}
MenuItem exportAsItem = new MenuItem(popupMenu, SWT.PUSH);
exportAsItem.setText("Export as...");
ImageDescriptor exportAsDesc = MdwPlugin.getImageDescriptor("icons/export_as.gif");
exportAsItem.setImage(exportAsDesc.createImage());
exportAsItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
exportAs(ProcessCanvasWrapper.this.getDisplay().getActiveShell());
}
});
}
if (!process.isReadOnly()) {
if (designerCanvasSelection instanceof WorkflowProcess) {
if (process.isInRuleSet()) {
// notes
MenuItem noteItem = new MenuItem(popupMenu, SWT.PUSH);
noteItem.setText("Add Note");
ImageDescriptor noteImageDesc = MdwPlugin.getImageDescriptor(ICON_DOC_GIF);
noteItem.setImage(noteImageDesc.createImage());
noteItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
addNote(x, y);
}
});
}
// paste
MenuItem pasteItem = new MenuItem(popupMenu, SWT.PUSH);
pasteItem.setText("Paste\tCtrl+V");
ImageDescriptor pasteImageDesc = MdwPlugin.getImageDescriptor("icons/paste.gif");
pasteItem.setImage(pasteImageDesc.createImage());
pasteItem.setEnabled(GraphClipboard.getInstance().get() != null);
pasteItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
pasteSelection();
}
});
} else {
// cut
MenuItem cutItem = new MenuItem(popupMenu, SWT.PUSH);
cutItem.setText("Cut\tCtrl+X");
ImageDescriptor cutImageDesc = MdwPlugin.getImageDescriptor("icons/cut.gif");
cutItem.setImage(cutImageDesc.createImage());
cutItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
cutSelection();
}
});
}
}
if (!(designerCanvasSelection instanceof WorkflowProcess)) {
// copy
MenuItem copyItem = new MenuItem(popupMenu, SWT.PUSH);
copyItem.setText("Copy\tCtrl+C");
ImageDescriptor copyImageDesc = MdwPlugin.getImageDescriptor("icons/copy.gif");
copyItem.setImage(copyImageDesc.createImage());
copyItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
copySelection();
}
});
// delete
if (!process.isReadOnly()) {
MenuItem deleteItem = new MenuItem(popupMenu, SWT.PUSH);
deleteItem.setText("Delete\tDel");
ImageDescriptor deleteImageDesc = MdwPlugin.getImageDescriptor("icons/delete.gif");
deleteItem.setImage(deleteImageDesc.createImage());
deleteItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
deleteSelection();
}
});
}
}
}
// properties
MenuItem propsItem = new MenuItem(popupMenu, SWT.PUSH);
propsItem.setText("Show Properties");
ImageDescriptor propsImageDesc = MdwPlugin.getImageDescriptor("icons/properties.gif");
propsItem.setImage(propsImageDesc.createImage());
propsItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
showPropertiesView();
}
});
// documentation
if (!isInstance()) {
MenuItem docsItem = new MenuItem(popupMenu, SWT.PUSH);
docsItem.setText("Documentation");
ImageDescriptor docsImageDesc = MdwPlugin.getImageDescriptor("icons/word.gif");
docsItem.setImage(docsImageDesc.createImage());
docsItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
openDocumentation();
}
});
}
// process definition xml
if (!isInstance() && (designerCanvasSelection instanceof WorkflowProcess) && getProcess().isInRuleSet()) {
MenuItem defXmlItem = new MenuItem(popupMenu, SWT.PUSH);
defXmlItem.setText("Definition Doc");
ImageDescriptor docsImageDesc = MdwPlugin.getImageDescriptor(ICON_DOC_GIF);
defXmlItem.setImage(docsImageDesc.createImage());
defXmlItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
openDefinitionXml();
}
});
}
// open subprocess
boolean isSubProcessActivity = designerCanvasSelection instanceof Activity && ((Activity) designerCanvasSelection).isSubProcessInvoke();
if (!isInstance() && isSubProcessActivity) {
final Activity subProcessActivity = (Activity) designerCanvasSelection;
if (!subProcessActivity.isHeterogeneousSubProcInvoke()) {
MenuItem subProcItem = new MenuItem(popupMenu, SWT.PUSH);
subProcItem.setText(OPEN_SUBPROCESS);
ImageDescriptor subProcImageDesc = MdwPlugin.getImageDescriptor("icons/designer.gif");
subProcItem.setImage(subProcImageDesc.createImage());
subProcItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
openSubProcess(subProcessActivity);
}
});
}
}
// edit script
boolean isScript = designerCanvasSelection instanceof Activity && ((Activity) designerCanvasSelection).isScript();
if (!isInstance() && isScript) {
final Activity scriptActivity = (Activity) designerCanvasSelection;
MenuItem editScriptItem = new MenuItem(popupMenu, SWT.PUSH);
String artifactTitle = "Script";
if (scriptActivity.isRule())
artifactTitle = "Rule";
else if (TransformEditorValueProvider.isTransformActivity(scriptActivity))
artifactTitle = "Transform";
else if (scriptActivity.getAttribute("Rule") != null)
artifactTitle += " *";
if (process.isReadOnly())
editScriptItem.setText("View " + artifactTitle);
else
editScriptItem.setText("Edit " + artifactTitle);
ImageDescriptor scriptImageDesc = MdwPlugin.getImageDescriptor("icons/script.gif");
editScriptItem.setImage(scriptImageDesc.createImage());
editScriptItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
openScript(scriptActivity);
}
});
}
// edit java
boolean isJava = designerCanvasSelection instanceof Activity && ((Activity) designerCanvasSelection).isDynamicJava();
if (!isInstance() && isJava) {
final Activity javaActivity = (Activity) designerCanvasSelection;
MenuItem editJavaItem = new MenuItem(popupMenu, SWT.PUSH);
String artifactTitle = "Java";
if (process.isReadOnly())
editJavaItem.setText("View " + artifactTitle);
else
editJavaItem.setText("Edit " + artifactTitle);
ImageDescriptor javaImageDesc = MdwPlugin.getImageDescriptor("icons/java.gif");
editJavaItem.setImage(javaImageDesc.createImage());
editJavaItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
openJava(javaActivity);
}
});
}
// open task instance or process instance
if (isInstance() && designerCanvasSelection instanceof Activity) {
final Activity activity = (Activity) designerCanvasSelection;
if (activity.isManualTask()) {
if (activity.getTaskInstances() != null && !activity.getTaskInstances().isEmpty()) {
MenuItem viewTaskItem = new MenuItem(popupMenu, SWT.PUSH);
viewTaskItem.setText("View Task");
viewTaskItem.setImage(MdwPlugin.getImageDescriptor("icons/taskmgr.gif").createImage());
viewTaskItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
TaskInstanceVO taskInstanceVO = null;
for (TaskInstanceVO taskInstance : activity.getTaskInstances()) {
if (taskInstanceVO == null || taskInstance.getTaskInstanceId() > taskInstanceVO.getTaskInstanceId())
taskInstanceVO = taskInstance;
}
if (taskInstanceVO != null) {
boolean assigned = activity.getProject().getUser().getUsername().equals(taskInstanceVO.getTaskClaimUserCuid());
String taskInstParams = activity.getProject().getTaskInstancePath(taskInstanceVO.getTaskInstanceId(), assigned);
WorkflowPackage packageVersion = activity.getPackage();
String packageParam = packageVersion.isDefaultPackage() ? "" : "&packageName=" + packageVersion.getName();
WebApp webapp = activity.getProject().checkRequiredVersion(5, 5) ? WebApp.MdwHub : WebApp.TaskManager;
WebLaunchActions.getLaunchAction(activity.getProject(), webapp).launch(activity.getProject(), taskInstParams + packageParam);
}
}
});
}
} else if (activity.isSubProcessInvoke() && activity.getSubProcessInstances() != null && !activity.getSubProcessInstances().isEmpty() && activity.getSubProcessInstances().size() < 50) {
MenuItem subMenuItem = new MenuItem(popupMenu, SWT.CASCADE);
subMenuItem.setText("SubProcesses");
subMenuItem.setImage(MdwPlugin.getImageDescriptor("icons/processfolder.gif").createImage());
Menu subMenu = new Menu(subMenuItem);
subMenuItem.setMenu(subMenu);
for (final ProcessInstanceVO subProcInst : activity.getSubProcessInstances()) {
MenuItem subProcItem = new MenuItem(subMenu, SWT.PUSH);
subProcItem.setText("Instance " + subProcInst.getId());
subProcItem.setImage(MdwPlugin.getImageDescriptor(ICON_PROCESS_GIF).createImage());
subProcItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
openProcessInstance(subProcInst);
}
});
}
}
}
// launch process, lock, show instances, find calling processes
if (!isInstance() && designerCanvasSelection instanceof WorkflowProcess) {
if (designerCanvasSelection.isUserAuthorized(UserRoleVO.PROCESS_EXECUTION)) {
MenuItem runItem = new MenuItem(popupMenu, SWT.PUSH);
runItem.setText("Run...");
ImageDescriptor runImageDesc = MdwPlugin.getImageDescriptor(ICON_RUN_GIF);
runItem.setImage(runImageDesc.createImage());
runItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
launchProcess((WorkflowProcess) designerCanvasSelection, false);
}
});
MenuItem runPageItem = new MenuItem(popupMenu, SWT.PUSH);
runPageItem.setText("Run Start Page...");
ImageDescriptor runPageImageDesc = MdwPlugin.getImageDescriptor(ICON_RUN_GIF);
runPageItem.setImage(runPageImageDesc.createImage());
runPageItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
launchProcessPage((WorkflowProcess) designerCanvasSelection);
}
});
if (!MdwPlugin.isRcp()) {
MenuItem debugItem = new MenuItem(popupMenu, SWT.PUSH);
debugItem.setText("Debug...");
ImageDescriptor debugImageDesc = MdwPlugin.getImageDescriptor("icons/debug.gif");
debugItem.setImage(debugImageDesc.createImage());
debugItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
launchProcess((WorkflowProcess) designerCanvasSelection, true);
}
});
}
}
if (isLockAllowed()) {
MenuItem lockItem = new MenuItem(popupMenu, SWT.PUSH);
lockItem.setText(getProcess().isLockedToUser() ? "Unlock Process" : "Lock Process");
ImageDescriptor lockImageDesc = MdwPlugin.getImageDescriptor("icons/lock.gif");
lockItem.setImage(lockImageDesc.createImage());
lockItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
toggleProcessLock(!((WorkflowProcess) designerCanvasSelection).isLockedToUser());
}
});
}
if (getProcess().getProject().isPureMdw52()) {
MenuItem callersItem = new MenuItem(popupMenu, SWT.PUSH);
callersItem.setText("Find Calling Processes");
ImageDescriptor callersImageDesc = MdwPlugin.getImageDescriptor(ICON_PROCESS_GIF);
callersItem.setImage(callersImageDesc.createImage());
callersItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
actionHandler.findCallers(designerCanvasSelection);
}
});
if (getProject().isFilePersist()) {
MenuItem hierarchyItem = new MenuItem(popupMenu, SWT.PUSH);
hierarchyItem.setText("Process Hierarchy");
ImageDescriptor hierarchyImageDesc = MdwPlugin.getImageDescriptor("icons/hierarchy.gif");
hierarchyItem.setImage(hierarchyImageDesc.createImage());
hierarchyItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
actionHandler.showHierarchy(designerCanvasSelection);
}
});
}
}
MenuItem instancesItem = new MenuItem(popupMenu, SWT.PUSH);
instancesItem.setText("View Instances");
ImageDescriptor instancesImageDesc = MdwPlugin.getImageDescriptor("icons/list.gif");
instancesItem.setImage(instancesImageDesc.createImage());
instancesItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
showProcessInstances((WorkflowProcess) designerCanvasSelection);
}
});
}
// launch activity
if (!isInstance() && designerCanvasSelection instanceof Activity && ((Activity) designerCanvasSelection).getProcess().isUserAuthorized(UserRoleVO.PROCESS_EXECUTION)) {
MenuItem runItem = new MenuItem(popupMenu, SWT.PUSH);
runItem.setText("Run from Here...");
ImageDescriptor runImageDesc = MdwPlugin.getImageDescriptor(ICON_RUN_GIF);
runItem.setImage(runImageDesc.createImage());
runItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
launchProcess((Activity) designerCanvasSelection, false);
}
});
if (!MdwPlugin.isRcp()) {
MenuItem debugItem = new MenuItem(popupMenu, SWT.PUSH);
debugItem.setText("Debug from Here...");
ImageDescriptor debugImageDesc = MdwPlugin.getImageDescriptor("icons/debug.gif");
debugItem.setImage(debugImageDesc.createImage());
debugItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
launchProcess((Activity) designerCanvasSelection, true);
}
});
}
}
// refresh
if (designerCanvasSelection instanceof WorkflowProcess) {
MenuItem refreshItem = new MenuItem(popupMenu, SWT.PUSH);
refreshItem.setText("Refresh");
ImageDescriptor refreshImageDesc = MdwPlugin.getImageDescriptor("icons/refresh.gif");
refreshItem.setImage(refreshImageDesc.createImage());
refreshItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
refresh();
}
});
// open in hub
if (getProject().checkRequiredVersion(6)) {
MenuItem hubItem = new MenuItem(popupMenu, SWT.PUSH);
hubItem.setText("Open in MDWHub");
ImageDescriptor hubImageDesc = MdwPlugin.getImageDescriptor("icons/webtools.gif");
hubItem.setImage(hubImageDesc.createImage());
hubItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
String resourcePath;
if (isInstance())
resourcePath = "#/workflow/processes/" + getProcess().getProcessInstance().getId();
else
resourcePath = "#/workflow/definitions/" + getProcess().getPackage().getName() + "/" + getProcess().getName();
WebLaunchActions.getLaunchAction(getProject(), WebApp.MdwHub).launch(getProject(), resourcePath);
}
});
}
}
// process definition and open calling process instance
if (isInstance() && designerCanvasSelection instanceof WorkflowProcess) {
final WorkflowProcess processInstVersion = (WorkflowProcess) designerCanvasSelection;
MenuItem procDefItem = new MenuItem(popupMenu, SWT.PUSH);
procDefItem.setText("Process Definition");
ImageDescriptor procDefImageDesc = MdwPlugin.getImageDescriptor(ICON_PROCESS_GIF);
procDefItem.setImage(procDefImageDesc.createImage());
procDefItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
openProcessDefinition(new WorkflowProcess(processInstVersion));
}
});
if (OwnerType.PROCESS_INSTANCE.equals(processInstVersion.getProcessInstance().getOwner())) {
MenuItem callingInstanceItem = new MenuItem(popupMenu, SWT.PUSH);
callingInstanceItem.setText("Calling Process Instance");
ImageDescriptor callerImageDesc = MdwPlugin.getImageDescriptor("icons/launch.gif");
callingInstanceItem.setImage(callerImageDesc.createImage());
callingInstanceItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
openCallingInstance();
}
});
}
MenuItem instanceHierarchyItem = new MenuItem(popupMenu, SWT.PUSH);
instanceHierarchyItem.setText("Instance Hierarchy");
ImageDescriptor hierarchyImageDesc = MdwPlugin.getImageDescriptor("icons/hierarchy.gif");
instanceHierarchyItem.setImage(hierarchyImageDesc.createImage());
instanceHierarchyItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
actionHandler.showHierarchy(designerCanvasSelection);
}
});
if (OwnerType.ERROR.equals(processInstVersion.getProcessInstance().getOwner())) {
MenuItem errorTriggerItem = new MenuItem(popupMenu, SWT.PUSH);
errorTriggerItem.setText("Triggering Process");
ImageDescriptor errorImageDesc = MdwPlugin.getImageDescriptor("icons/error.gif");
errorTriggerItem.setImage(errorImageDesc.createImage());
errorTriggerItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
openTriggeringInstance();
}
});
}
}
// retry and skip
if (isInstance() && designerCanvasSelection instanceof Activity && ((Activity) designerCanvasSelection).hasInstanceInfo() && ((Activity) designerCanvasSelection).getProcess().isUserAuthorized(UserRoleVO.PROCESS_EXECUTION)) {
MenuItem retryItem = new MenuItem(popupMenu, SWT.PUSH);
retryItem.setText("Retry");
ImageDescriptor retryImageDesc = MdwPlugin.getImageDescriptor("icons/retry.gif");
retryItem.setImage(retryImageDesc.createImage());
retryItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
PanelBusyIndicator pbi = new PanelBusyIndicator(getDisplay(), getCanvas());
try {
pbi.busyWhile(new Runnable() {
public void run() {
Activity activity = (Activity) designerCanvasSelection;
Shell shell = MdwPlugin.getActiveWorkbenchWindow().getShell();
ActivityInstanceVO actInstVO = activity.getInstances().get(activity.getInstances().size() - 1);
ActivityInstanceDialog actInstDlg = new ActivityInstanceDialog(shell, activity, actInstVO, Mode.RETRY);
actInstDlg.open();
}
});
} catch (InvocationTargetException ex) {
PluginMessages.uiError(ex, "Retry Activity", getProject());
}
}
});
MenuItem skipItem = new MenuItem(popupMenu, SWT.PUSH);
skipItem.setText("Proceed");
ImageDescriptor skipImageDesc = MdwPlugin.getImageDescriptor("icons/skip.gif");
skipItem.setImage(skipImageDesc.createImage());
skipItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
PanelBusyIndicator pbi = new PanelBusyIndicator(getDisplay(), getCanvas());
try {
pbi.busyWhile(new Runnable() {
public void run() {
Activity activity = (Activity) designerCanvasSelection;
Shell shell = MdwPlugin.getActiveWorkbenchWindow().getShell();
ActivityInstanceVO actInstVO = activity.getInstances().get(activity.getInstances().size() - 1);
ActivityInstanceDialog actInstDlg = new ActivityInstanceDialog(shell, activity, actInstVO, Mode.SKIP);
actInstDlg.open();
}
});
} catch (InvocationTargetException ex) {
PluginMessages.uiError(ex, "Skip Activity", getProject());
}
}
});
}
// view owning document
if (isInstance() && designerCanvasSelection instanceof WorkflowProcess && (OwnerType.DOCUMENT.equals(getProcess().getProcessInstance().getOwner()) || OwnerType.TESTER.equals(getProcess().getProcessInstance().getOwner()))) {
MenuItem docItem = new MenuItem(popupMenu, SWT.PUSH);
docItem.setText("View Owning Document");
ImageDescriptor docImageDesc = MdwPlugin.getImageDescriptor(ICON_DOC_GIF);
docItem.setImage(docImageDesc.createImage());
docItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
PanelBusyIndicator pbi = new PanelBusyIndicator(getDisplay(), getCanvas());
try {
pbi.busyWhile(new Runnable() {
public void run() {
IStorage storage = new DocumentStorage(getProject(), new DocumentReference(getProcess().getProcessInstance().getOwnerId(), null));
final IStorageEditorInput input = new StorageEditorInput(storage);
final IWorkbenchPage page = MdwPlugin.getActivePage();
if (page != null) {
try {
page.openEditor(input, "org.eclipse.ui.DefaultTextEditor");
} catch (PartInitException ex) {
PluginMessages.uiError(ex, "View Document", getProject());
}
}
}
});
} catch (InvocationTargetException ex) {
PluginMessages.uiError(ex, "View Document", getProject());
}
}
});
}
return popupMenu;
}
Aggregations