jaspersoft安全文件问题



你好,我正试图在我的jaspersoft实例上实现一个新的安全文件,并在试图保存我的域时得到以下错误。我不认为这是一个XML错误,但可能是jaspersoft服务器在尝试加载文件时更具体的东西。否则我不知道为什么这不起作用。任何帮助,这将是非常感激!

There is a problem with the security file
The following field(s) can not be found:
The filter condition 'testProfileAttribute(dw_analytics_dim_faculty.faculty_username, 'username')' references one or more fields that cannot be found: ID [dw_analytics_dim_faculty.faculty_username].
The filter condition 'testProfileAttribute(dw_analytics_dim_graders_rls.grader_username, 'username')' references one or more fields that cannot be found: ID [dw_analytics_dim_graders_rls.grader_username].
The filter condition 'testProfileAttribute(dw_analytics_dim_coach.coach_username, 'username')' references one or more fields that cannot be found: ID [dw_analytics_dim_coach.coach_username].
The filter condition 'testProfileAttribute(dw_analytics_users_workspaces_rls.username, 'username')' references one or more fields that cannot be found: ID [dw_analytics_users_workspaces_rls.username].

这是我格式化的XML:

<?xml version="1.0" encoding="UTF-8"?>
<securityDefinition xmlns="http://www.jaspersoft.com/2007/SL/XMLSchema" version="1.0" itemGroupDefaultAccess="granted">
<resourceAccessGrants>
<resourceAccessGrantList id="JoinTree_1_resource_access_grant" label="aLabel" resourceId="JoinTree_1">
<resourceAccessGrants>
<resourceAccessGrant id="Jointree_1_row_access_grant_faculty">
<principalExpression><![CDATA[authentication.getPrincipal().getRoles().any{it.getRoleName() in ['ROLE_FACULTY']}]]></principalExpression>
<filterExpression>testProfileAttribute(dw_analytics_dim_faculty.faculty_username,'username')</filterExpression>
</resourceAccessGrant>
<resourceAccessGrant id="Jointree_1_row_access_grant_grader">
<principalExpression><![CDATA[authentication.getPrincipal().getRoles().any{it.getRoleName() in ['ROLE_GRADER']}]]></principalExpression>
<filterExpression>testProfileAttribute(dw_analytics_dim_graders_rls.grader_username,'username')</filterExpression>
</resourceAccessGrant>
<resourceAccessGrant id="Jointree_1_row_access_grant_coach">
<principalExpression><![CDATA[authentication.getPrincipal().getRoles().any{it.getRoleName() in ['ROLE_COACH']} && !(attributesService.getAttribute('tenant','USER')?.getAttrValue().contains('brandman'))]]></principalExpression>
<filterExpression>testProfileAttribute(dw_analytics_dim_coach.coach_username,'username')</filterExpression>
</resourceAccessGrant>
<resourceAccessGrant id="Jointree_1_row_access_grant_workspaces">
<principalExpression><![CDATA[authentication.getPrincipal().getRoles().any{it.getRoleName() in ['ROLE_ADMIN','ROLE_COACH','ROLE_FACULTY','ROLE_GRADER']}]]></principalExpression>
<filterExpression>testProfileAttribute(dw_analytics_users_workspaces_rls.username,'username')</filterExpression>
</resourceAccessGrant>
</resourceAccessGrants>
</resourceAccessGrantList>
</resourceAccessGrants>
</securityDefinition>
有jaspersoft经验的人知道我做错了什么吗?此外,我的Domain具有文件中列出的所有表,其中包含对username的所有连接和引用。

enter code here我想到了这个,过滤器表达式直接从表中读取连接所以在我们系统的某些域中,表的别名读取为&;dw_analytics。&;在我的例子中,它只是视图或表的名称,没有那个。一旦我在xml中做了更改,它就被接受了。这是修改后的xml

<resourceAccessGrants>
<resourceAccessGrantList id="JoinTree_1_resource_access_grant" label="aLabel" resourceId="JoinTree_1">
<resourceAccessGrants>

<resourceAccessGrant id="Jointree_1_row_access_grant_faculty"> 
<principalExpression><![CDATA[authentication.getPrincipal().getRoles().any{it.getRoleName() in ['ROLE_FACULTY']}]]></principalExpression> 
<filterExpression>testProfileAttribute(dim_faculty.faculty_username,'username') </filterExpression> 
</resourceAccessGrant>
<resourceAccessGrant id="Jointree_1_row_access_grant_grader"> 
<principalExpression><![CDATA[authentication.getPrincipal().getRoles().any{it.getRoleName() in ['ROLE_GRADER']}]]></principalExpression> 
<filterExpression>testProfileAttribute(dim_graders_rls.grader_username,'username') </filterExpression> 
</resourceAccessGrant>          
<resourceAccessGrant id="Jointree_1_row_access_grant_coach"> 
<principalExpression><![CDATA[authentication.getPrincipal().getRoles().any{it.getRoleName() in ['ROLE_COACH']} && !(attributesService.getAttribute('tenant','USER')?.getAttrValue().contains('brandman'))]]>
</principalExpression> 
<filterExpression>testProfileAttribute(dim_coach.coach_username,'username') </filterExpression> 
</resourceAccessGrant>      
<resourceAccessGrant id="Jointree_2_row_access_grant_workspaces"> 
<principalExpression><![CDATA[authentication.getPrincipal().getRoles().any{it.getRoleName() in ['ROLE_ADMIN','ROLE_COACH','ROLE_FACULTY','ROLE_GRADER']}]]></principalExpression> 
<filterExpression>testProfileAttribute(users_workspaces_rls.username,'username') </filterExpression> 
</resourceAccessGrant>          
</resourceAccessGrants>
</resourceAccessGrantList>
</resourceAccessGrants>

最新更新