Dúvida Eclipse RCP - Plugins

Bom dia,

Quero desenvolver um sistema de relatórios para utilizando o framework rcp + jasper reports, onde cada relatório desenvolvido pudesse ser distribuido como um plugin.

Estou iniciando o uso do rcp, tenho lido bastante nas últimas semanas e fiz alguns exemplos de aplicação que encontrei pela net, vou descrever a lógica que estou seguindo para montar esse sistema de relatórios, peço que os colegas avaliem e digam se estou indo no caminho certo.

Desenvolvi um plugin genérico, que dirá como aos plugins de relatórios como eles deverão funcionar (todo relatório deverá ter caminho do arquivo .jasper, query básica de consulta, filtros válidos e parametros do .jasper etc)

<schema targetNamespace="br.com.teste.report" xmlns="http://www.w3.org/2001/XMLSchema">
<annotation>
      <appinfo>
         <meta.schema plugin="br.com.teste.report" id="br.com.teste.report" name="report"/>
      </appinfo>
      <documentation>
      </documentation>
   </annotation>

   <element name="extension">
      <annotation>
         <appinfo>
            <meta.element />
         </appinfo>
      </annotation>
      <complexType>
         <choice>
            <choice minOccurs="1" maxOccurs="unbounded">
               <element ref="report_order_parameter"/>
            </choice>
            <choice minOccurs="1" maxOccurs="unbounded">
               <element ref="report_jasper_parameter"/>
            </choice>
            <choice minOccurs="1" maxOccurs="unbounded">
               <element ref="report_filter_parameter"/>
            </choice>
            <element ref="report_model"/>
         </choice>
         <attribute name="point" type="string" use="required">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
         <attribute name="id" type="string">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
         <attribute name="name" type="string">
            <annotation>
               <documentation>
                  
               </documentation>
               <appinfo>
                  <meta.attribute translatable="true"/>
               </appinfo>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="report_model">
      <complexType>
         <attribute name="report_name" type="string" use="required">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
         <attribute name="report_file_name" type="string" use="required">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
         <attribute name="report_tooltip" type="string">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
         <attribute name="sql_query" type="string" use="required">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="report_jasper_parameter">
      <complexType>
         <attribute name="name" type="string" use="required">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
         <attribute name="value" type="string" use="required">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="report_order_parameter">
      <complexType>
         <attribute name="name" type="string" use="required">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
         <attribute name="bd_field" type="string" use="required">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
      </complexType>
   </element>

   <element name="report_filter_parameter">
      <complexType>
         <attribute name="name" type="string" use="required">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
         <attribute name="bd_field" type="string" use="required">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
         </attribute>
         <attribute name="type" use="required">
            <annotation>
               <documentation>
                  
               </documentation>
            </annotation>
            <simpleType>
               <restriction base="string">
                  <enumeration value="numeric">
                  </enumeration>
                  <enumeration value="date">
                  </enumeration>
                  <enumeration value="string">
                  </enumeration>
               </restriction>
            </simpleType>
         </attribute>
      </complexType>
   </element>

   <annotation>
      <appinfo>
         <meta.section type="since"/>
      </appinfo>
      <documentation>
         [Enter the first release in which this extension point appears.]
      </documentation>
   </annotation>

   <annotation>
      <appinfo>
         <meta.section type="examples"/>
      </appinfo>
      <documentation>
         [Enter extension point usage example here.]
      </documentation>
   </annotation>

   <annotation>
      <appinfo>
         <meta.section type="apiinfo"/>
      </appinfo>
      <documentation>
         [Enter API information here.]
      </documentation>
   </annotation>

   <annotation>
      <appinfo>
         <meta.section type="implementation"/>
      </appinfo>
      <documentation>
      </documentation>
   </annotation>
</schema>

E esse seria um exemplo de plugin

<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
   <extension
         point="br.com.teste.report">
      <report_model
            report_file_name="product_simple_report.jrxml"
            report_name="%report.product.product_simple_report.reportName"
            report_tooltip="%report.product.product_simple_report.reportTooltip"
            sql_query="aqui vai a queryl">
      </report_model>
      <report_jasper_parameter
            name="tittle"
            value="%report.product.product_simple_report.reportName">
      </report_jasper_parameter>
      <report_jasper_parameter
            name="id"
            value="%report.product.product_simple_report.code">
      </report_jasper_parameter>
      <report_jasper_parameter
            name="barCode"
            value="%report.product.product_simple_report.barcode">
      </report_jasper_parameter>
      <report_jasper_parameter
            name="productName"
            value="%report.product.product_simple_report.productName">
      </report_jasper_parameter>
      <report_jasper_parameter
            name="price"
            value="%report.product.product_simple_report.price">
      </report_jasper_parameter>
      <report_jasper_parameter
            name="sector"
            value="%report.product.product_simple_report.sector">
      </report_jasper_parameter>
   </extension>
</plugin>

Cada plugin como esse seria identificado dentro de uma feature

seria isso, tenho mais algumas dúvidas, mas primeiramente gostaria de validar essa idéia,

obrigado