苏州做网站0512jinyan,搭建网站的步骤有哪些,视觉创意设计公司,怎么开跨境电商网店#xfeff;#xfeff;题外话#xff1a; 最近在忙公司的云项目空闲时间不是很多#xff0c;所以很久没来更新#xff0c;今天补上一篇#xff01;
回顾#xff1a; 前几篇介绍了一下设计器的界面和Draw2d基础知识#xff0c;这篇讲解一下本设计器如何扩展Draw2d。 进…题外话 最近在忙公司的云项目空闲时间不是很多所以很久没来更新今天补上一篇
回顾 前几篇介绍了一下设计器的界面和Draw2d基础知识这篇讲解一下本设计器如何扩展Draw2d。 进入主题 先看一下扩展的类图 其中有颜色标注的类即是扩展类其中Node、Port、InputPort、OutputPort是Draw2d提供的类其余都是扩展类。 这里重点介绍几个核心类以及相关重要的方法如下 上图中黄色部分负责生成Activiti流程文件中Task对应的XML片段所以对于不同类型Task需要实现的方法例如UserTask代码如下 Js代码 draw2d.UserTaskfunction(configPropCallback){ draw2d.Task.call(this,configPropCallback); this.performerTypenull; this.dueDatenull; this.prioritynull; this.formKey null; this.expressionnull; this.isUseExpressionnull; this.assigneenull; this.candidateUsersnew draw2d.ArrayList(); this.candidateGroupsnew draw2d.ArrayList(); this.formPropertiesnew draw2d.ArrayList(); this.taskListenersnew draw2d.ArrayList(); this.setTitle(User Task); }; draw2d.UserTask.prototypenew draw2d.Task(); draw2d.UserTask.prototype.typedraw2d.UserTask; draw2d.UserTask.newInstancefunction(userTaskXMLNode){ var task new draw2d.UserTask(); task.iduserTaskXMLNode.attr(id); task.taskIduserTaskXMLNode.attr(id); task.taskNameuserTaskXMLNode.attr(name); task.setContent(userTaskXMLNode.attr(name)); return task; }; draw2d.UserTask.prototype.getIconClassName function(){ return user-task-icon; }; draw2d.UserTask.prototype.getStartElementXMLfunction(){ var xmluserTask ; xmlxmlthis.getGeneralXML(); xmlxmlthis.getPerformersXML(); xmlxml\n; return xml; }; draw2d.UserTask.prototype.getEndElementXMLfunction(){ var xml /userTask\n; return xml; }; draw2d.UserTask.prototype.getDocumentationXMLfunction(){ if(this.documentationnull||this.documentation)return ; var xmldocumentation; xmlxmlthis.documentation; xmlxml/documentation; return xml; }; draw2d.UserTask.prototype.getPerformersXMLfunction(){ var xml; if(this.isUseExpression){ if(this.expression!nullthis.expression!){ if(this.performerTypeassignee){ xmlxmlactiviti:assigneethis.expression ; }else if(this.performerTypecandidateUsers){ xmlxmlactiviti:candidateUsersthis.expression ; }else if(this.performerTypecandidateGroups){ xmlxmlactiviti:candidateGroupsthis.expression ; } } }else{ if(this.performerTypeassignee){ if(this.assignee!nullthis.assignee!) xmlxmlthis.assignee; }else if(this.performerTypecandidateUsers){ for(var i0;ithis.candidateUsers.getSize();i){ var user this.candidateUsers.get(i); xmlxmluser.sso,; } }else if(this.performerTypecandidateGroups){ for(var i0;ithis.candidateGroups.getSize();i){ var group this.candidateGroups.get(i); xmlxmlgroup,; } } } if(this.dueDate!nullthis.dueDate!){ xmlxmlactiviti:dueDatethis.dueDate } if(this.formKey ! null this.formKey ! ){ xmlxmlactiviti:formKeythis.formKey ; } if(this.priority!nullthis.priority!){ xmlxmlactiviti:prioritythis.priority } return xml; }; draw2d.UserTask.prototype.getExtensionElementsXMLfunction(){ if(this.listeners.getSize()0this.formProperties.getSize()0)return ; var xml extensionElements\n; xmlxmlthis.getFormPropertiesXML(); xmlxmlthis.getListenersXML(); xmlxml/extensionElements\n; return xml; }; draw2d.UserTask.prototype.getListenersXMLfunction(){ var xml draw2d.Task.prototype.getListenersXML.call(this); for(var i0;ithis.taskListeners.getSize();i){ var listener this.taskListeners.get(i); xmlxmllistener.toXML(); } return xml; }; draw2d.UserTask.prototype.getFormPropertiesXMLfunction(){ var xml ; for(var i0;ithis.formProperties.getSize();i){ var formProperty this.formProperties.get(i); xmlxmlformProperty.toXML(); } return xml; }; draw2d.UserTask.prototype.toXMLfunction(){ var xmlthis.getStartElementXML(); xmlxmlthis.getDocumentationXML(); xmlxmlthis.getExtensionElementsXML(); xmlxmlthis.getMultiInstanceXML(); xmlxmlthis.getEndElementXML(); return xml; } draw2d.UserTask.prototype.getCandidateUserfunction(sso){ for(var i0;ithis.candidateUsers.getSize();i){ var candidate this.candidateUsers.get(i); if(candidate.ssosso){ return candidate; } } return null; }; draw2d.UserTask.prototype.deleteCandidateUserfunction(sso){ var candidate this.getCandidateUser(sso); this.candidateUsers.remove(candidate); }; draw2d.UserTask.prototype.addCandidateUserfunction(user){ if(this.getCandidateUser(user.sso)null) this.candidateUsers.add(user); }; draw2d.UserTask.prototype.getCandidateGroupfunction(name){ for(var i0;ithis.candidateGroups.getSize();i){ var candidate this.candidateGroups.get(i); if(candidatename){ return candidate; } } return null; }; draw2d.UserTask.prototype.deleteCandidateGroupfunction(name){ var candidate this.getCandidateGroup(name); this.candidateGroups.remove(candidate); }; draw2d.UserTask.prototype.addCandidateGroupfunction(name){ if(!this.candidateGroups.contains(name)) this.candidateGroups.add(name); }; draw2d.UserTask.prototype.getTaskListenerfunction(id){ for(var i0;ithis.taskListeners.getSize();i){ var listener this.taskListeners.get(i); if(listener.getId() id){ return listener; } } }; draw2d.UserTask.prototype.deleteTaskListenerfunction(id){ var listener this.getTaskListener(id); this.taskListeners.remove(listener); }; draw2d.UserTask.prototype.addTaskListenerfunction(listener){ this.taskListeners.add(listener); }; draw2d.UserTask.prototype.setTaskListenersfunction(listeners){ this.taskListeners listeners; }; draw2d.UserTask.prototype.getFormPropertiesfunction(id){ for(var i0;ithis.formProperties.getSize();i){ var prop this.formProperties.get(i); if(prop.id id){ return prop; } } }; draw2d.UserTask.prototype.deleteFormPropertiesfunction(id){ var prop this.getFormProperties(id); this.formProperties.remove(prop); }; draw2d.UserTask.prototype.addFormPropertiesfunction(prop){ this.formProperties.add(prop); }; draw2d.UserTask.prototype.setFormPropertiesfunction(props){ this.formProperties props; }; draw2d.UserTaskfunction(configPropCallback){draw2d.Task.call(this,configPropCallback);this.performerTypenull;this.dueDatenull;this.prioritynull;this.formKey null;this.expressionnull;this.isUseExpressionnull;this.assigneenull;this.candidateUsersnew draw2d.ArrayList();this.candidateGroupsnew draw2d.ArrayList();this.formPropertiesnew draw2d.ArrayList();this.taskListenersnew draw2d.ArrayList();this.setTitle(User Task);
};
draw2d.UserTask.prototypenew draw2d.Task();
draw2d.UserTask.prototype.typedraw2d.UserTask;
draw2d.UserTask.newInstancefunction(userTaskXMLNode){var task new draw2d.UserTask();task.iduserTaskXMLNode.attr(id);task.taskIduserTaskXMLNode.attr(id);task.taskNameuserTaskXMLNode.attr(name);task.setContent(userTaskXMLNode.attr(name));return task;
};
draw2d.UserTask.prototype.getIconClassName function(){return user-task-icon;
};
draw2d.UserTask.prototype.getStartElementXMLfunction(){var xmluserTask ;xmlxmlthis.getGeneralXML();xmlxmlthis.getPerformersXML();xmlxml\n;return xml;
};
draw2d.UserTask.prototype.getEndElementXMLfunction(){var xml /userTask\n;return xml;
};
draw2d.UserTask.prototype.getDocumentationXMLfunction(){if(this.documentationnull||this.documentation)return ;var xmldocumentation;xmlxmlthis.documentation;xmlxml/documentation;return xml;
};
draw2d.UserTask.prototype.getPerformersXMLfunction(){var xml;if(this.isUseExpression){if(this.expression!nullthis.expression!){if(this.performerTypeassignee){xmlxmlactiviti:assigneethis.expression ;}else if(this.performerTypecandidateUsers){xmlxmlactiviti:candidateUsersthis.expression ;}else if(this.performerTypecandidateGroups){xmlxmlactiviti:candidateGroupsthis.expression ;}}}else{if(this.performerTypeassignee){if(this.assignee!nullthis.assignee!)xmlxmlthis.assignee;}else if(this.performerTypecandidateUsers){for(var i0;ithis.candidateUsers.getSize();i){var user this.candidateUsers.get(i);xmlxmluser.sso,;}}else if(this.performerTypecandidateGroups){for(var i0;ithis.candidateGroups.getSize();i){var group this.candidateGroups.get(i);xmlxmlgroup,;}}}if(this.dueDate!nullthis.dueDate!){xmlxmlactiviti:dueDatethis.dueDate }if(this.formKey ! null this.formKey ! ){xmlxmlactiviti:formKeythis.formKey ;}if(this.priority!nullthis.priority!){xmlxmlactiviti:prioritythis.priority }return xml;
};
draw2d.UserTask.prototype.getExtensionElementsXMLfunction(){if(this.listeners.getSize()0this.formProperties.getSize()0)return ;var xml extensionElements\n;xmlxmlthis.getFormPropertiesXML();xmlxmlthis.getListenersXML();xmlxml/extensionElements\n;return xml;
};
draw2d.UserTask.prototype.getListenersXMLfunction(){var xml draw2d.Task.prototype.getListenersXML.call(this);for(var i0;ithis.taskListeners.getSize();i){var listener this.taskListeners.get(i);xmlxmllistener.toXML();}return xml;
};
draw2d.UserTask.prototype.getFormPropertiesXMLfunction(){var xml ;for(var i0;ithis.formProperties.getSize();i){var formProperty this.formProperties.get(i);xmlxmlformProperty.toXML();}return xml;
};
draw2d.UserTask.prototype.toXMLfunction(){var xmlthis.getStartElementXML();xmlxmlthis.getDocumentationXML();xmlxmlthis.getExtensionElementsXML();xmlxmlthis.getMultiInstanceXML();xmlxmlthis.getEndElementXML();return xml;
}
draw2d.UserTask.prototype.getCandidateUserfunction(sso){for(var i0;ithis.candidateUsers.getSize();i){var candidate this.candidateUsers.get(i);if(candidate.ssosso){return candidate;}}return null;
};
draw2d.UserTask.prototype.deleteCandidateUserfunction(sso){var candidate this.getCandidateUser(sso);this.candidateUsers.remove(candidate);
};
draw2d.UserTask.prototype.addCandidateUserfunction(user){if(this.getCandidateUser(user.sso)null)this.candidateUsers.add(user);
};
draw2d.UserTask.prototype.getCandidateGroupfunction(name){for(var i0;ithis.candidateGroups.getSize();i){var candidate this.candidateGroups.get(i);if(candidatename){return candidate;}}return null;
};
draw2d.UserTask.prototype.deleteCandidateGroupfunction(name){var candidate this.getCandidateGroup(name);this.candidateGroups.remove(candidate);
};
draw2d.UserTask.prototype.addCandidateGroupfunction(name){if(!this.candidateGroups.contains(name))this.candidateGroups.add(name);
};
draw2d.UserTask.prototype.getTaskListenerfunction(id){for(var i0;ithis.taskListeners.getSize();i){var listener this.taskListeners.get(i);if(listener.getId() id){return listener;}}
};
draw2d.UserTask.prototype.deleteTaskListenerfunction(id){var listener this.getTaskListener(id);this.taskListeners.remove(listener);
};
draw2d.UserTask.prototype.addTaskListenerfunction(listener){this.taskListeners.add(listener);
};
draw2d.UserTask.prototype.setTaskListenersfunction(listeners){this.taskListeners listeners;
};
draw2d.UserTask.prototype.getFormPropertiesfunction(id){for(var i0;ithis.formProperties.getSize();i){var prop this.formProperties.get(i);if(prop.id id){return prop;}}
};
draw2d.UserTask.prototype.deleteFormPropertiesfunction(id){var prop this.getFormProperties(id);this.formProperties.remove(prop);
};
draw2d.UserTask.prototype.addFormPropertiesfunction(prop){this.formProperties.add(prop);
};
draw2d.UserTask.prototype.setFormPropertiesfunction(props){this.formProperties props;
}; 请注意代码中toXML方法这个方法负责产生UserTask节点的XML代码片段它调用了其他几个方法getStartElementXML、getDocumentationXML、getExtensionElementsXML、getMultiInstanceXML、getEndElementXML,不同类型的Task可能不需要调用所以这些方法可以根据需要选择性调用当然这取决于Activiti流程文件的规范当然对于不同类型的Task你也可以添加一些自定义的方法如生成操作人的方法代码中getPerformersXML方法等等。
由于Activiti设计的Task类型比较多这里就不一一介绍了有兴趣可以去查看一下源代码还是很好理解的有问题可以给我留言
时间有限就先写到这吧下一篇介绍一下其他扩展类敬请关注。。。。。。