2

我们有几个客户(公司),每个客户都有单独的数据库,即 companyA 有 databaseA,CompanyB 有 databaseB ...等等,所以我想要实现的是,在 pentaho 用户控制台中,所有这些公司都使用相同的报告,但使用不同的报告datasoruce,例如 CompanyA,CompanyB..etc 将有权访问名为“Reports”的解决方案文件夹,该文件夹有一个报告列表,例如每周销售报告,所以我希望每周销售报告在登录用户来自公司 A 时使用公司 A 的数据库并使用登录用户来自公司B时公司B的数据库,

我试过了,但我收到了这个错误

XmlBeanDefinitionStoreException: Line 67 in XML document from file [C:\pentaho2 
biserver-ce\pentaho-solutions\system\pentahoObjects.spring.xml] is invalid; nes 
ed exception is org.xml.sax.SAXParseException; lineNumber: 67; columnNumber: 50 
 The value of attribute "value" associated with an element type "property" must 
not contain the '<' character. 

它在抱怨<property name="datasourceNameFormat" value="<![CDATA[{0}-{1}]]>

关于导致此错误的任何想法,或者有任何其他方法可以做到这一点谢谢

4

1 回答 1

1

我不确定你的方式,但完全有可能拥有动态 jndi。您可以在 xaction 中的变量中使用 jndi,并可以在 xaction 中使用它来区分目标数据库。

<inputs> 
<JNDDDI type="string"> 
  <sources> 
    <request>JNDDDI</request> 
  </sources>  
  <default-value><![CDATA[jndi_database1]]></default-value> 
</JNDDDI>

……

<action-definition> 
<component-name>SQLLookupRule</component-name>
<action-type>hourly</action-type>
<action-inputs> 
  <JNDDDI type="string"/>
</action-inputs>
<action-outputs> 
  <prepared_component type="sql-query"/> 
</action-outputs>
<component-definition> 
  <jndi>{JNDDDI}</jndi>  
  <query><![CDATA[select ...from ...]]></query>  
  <live><![CDATA[true]]></live> 
</component-definition> 

如果你使用 JasperReport 组件,同样的事情。

于 2013-02-18T15:32:43.350 回答