在上面的开发工作中,我们已经提到了FMEA是APQP项目的一个扩展,FMEA扩展了APQP中对于FMEA文档的编辑功能。
如果没有FMEA扩展,APQP项目的文档只能通过手工建立。
如果有FMEA扩展,可以通过定义事件的方式,扩展功能。
首先,我们在APQP中建立扩展点:
我们在Apqp项目加载时,读取扩展点(当然也可以在使用的时候读)。我考虑到文档的定义不是特别复杂。所以,在Apqp 的bundle加载时期的读取并保存在bundle中。
代码
private IExtension[] getConfigurationElement(String extendsionPointID) {
IExtensionRegistry er = Platform.getExtensionRegistry();
IExtensionPoint ep = er.getExtensionPoint(PLUGIN_ID, extendsionPointID);
if (ep == null)
return null;
return ep.getExtensions();
}
private void loadApqpDocument() {
IExtension[] extList = Apqp.getDefault().getConfigurationElement(Apqp.EXTENSIONPOINT_DOCUMENT);
if(extList!=null){
for(int i = 0 ; i<extList.length; i++) {
IConfigurationElement[] elements = extList[i].getConfigurationElements();
for (int j = 0; j < elements.length; j++)
documentList .add(elements[j]);
}
}
}
public void start(BundleContext context) throws Exception {
super.start(context);
plugin = this;
String ouid = getPreferenceStore().getString(OPEND_PROJECT);
if(!"".equals(ouid)&&ouid!=null){
workingProject = new Project(ouid);
}
loadProjectTemplate();
loadActivityHandler();
loadApqpDocument();
}
IExtensionRegistry er = Platform.getExtensionRegistry();
IExtensionPoint ep = er.getExtensionPoint(PLUGIN_ID, extendsionPointID);
if (ep == null)
return null;
return ep.getExtensions();
}
private void loadApqpDocument() {
IExtension[] extList = Apqp.getDefault().getConfigurationElement(Apqp.EXTENSIONPOINT_DOCUMENT);
if(extList!=null){
for(int i = 0 ; i<extList.length; i++) {
IConfigurationElement[] elements = extList[i].getConfigurationElements();
for (int j = 0; j < elements.length; j++)
documentList .add(elements[j]);
}
}
}
public void start(BundleContext context) throws Exception {
super.start(context);
plugin = this;
String ouid = getPreferenceStore().getString(OPEND_PROJECT);
if(!"".equals(ouid)&&ouid!=null){
workingProject = new Project(ouid);
}
loadProjectTemplate();
loadActivityHandler();
loadApqpDocument();
}