在Spotfire上做关于某个Dashboard或者某个层级的访问安全设置,这是属于再常见不过的企业级应用的设置了。
那么这个怎么实现呢?如下是这相关内容的分享,请各位亲留存:https://community.tibco.com/wiki/how-implement-tab-page-level-security-spotfire
先决条件: -
- 属性控件/文档属性
- Python脚本
- 项目中的统计服务器(TERR)
- 个性化信息链接
在Spotfire中,我们可以使用个性化信息链接应用数据级安全性,即,您可以设置数据源以仅返回特定用户或组的适用信息。
示例: - 返回亚洲用户组的亚洲地区销售数据。
因此,可以对数据进行限制,但仪表板上的选项卡级安全性如何?
是的,可以使用Python脚本实现Tab Level安全性。构建一个Python脚本,该脚本应根据您的要求读取当前用户/当前组,并相应地实现逻辑。让我们举一个简单的例子,仪表板有两个标签; “摘要”选项卡和“详细信息”选项卡,并且希望限制特定用户组“受限制”(Spotfire Group)的“详细信息”选项卡。
假设我们已经创建了Python脚本,现在下一步将是如何在打开仪表板时触发Python脚本?
以下是实现我们目标的详细步骤:
步骤1:基于个性化信息链接创建数据表,该链接应获取当前用户是否属于受限制组的数据。查询应如下: -
SELECT
U1。“USER_NAME”AS“USERNAME”,
G2。“GROUP_NAME”AS“GROUPNAME”
FROM
“SPOT_USR”。“USERS”U1,
“SPOT_USR”。“GROUPS”G2,
“SPOT_USR”。“GROUP_MEMBERS”G3
WHERE
(G3 。“MEMBER_USER_ID”= U1。“USER_ID”)
AND(G2。“GROUP_ID”= G3。“GROUP_ID”)
AND(U1。“USER_NAME”位于(%CURRENT_USER%))
和(G2。“GROUP_NAME”='限制' )
和<条件>
第2步:删除“详细信息”页面的Python脚本如下所示
对于
Page.Pages中的Page:如果Page.Title ==“Detail”:
Document.Pages.Remove(页面)
步骤3:现在更新python脚本以从DataTable读取基于Personalized Information的Usergroup或通过R脚本将Usergroup值分配给Document Property
a)从数据表中读取用户组的Python脚本。
table = Document.Data.Tables [“PersonalizedInformationLinkTable”]
minCol = table.Columns ['GroupName']
minCursor = DataValueCursor.Create(minCol)
for table中的行.GetRows(minCursor):
Document.Properties [“UserGroup”] = minCursor.CurrentValue;
b)通过R脚本将Usergroup值分配给Document Property。
使用如下脚本注册新的数据函数(TERR),并将输入和输出参数定义为值
DocProperty < - 输入
单击“运行”按钮并选择输入为表达式,定义为
Max([PersonalizedInformationLinkTable]。[GROUP_NAME])
同样,选择Output as Document Property并相应地选择属性。
第3步:最终的Python脚本看起来像
从Spotfire.Dxp.Data导入 导入Spotfire.Dxp *
#-------------如果我们通过Python获取usergroup -----------------
table = Document.Data.Tables [“PersonalizedInformationLinkTable”]
minCol = table.Columns ['GroupName']
minCursor = DataValueCursor.Create(minCol)
for table.GetRows(minCursor):
Document.Properties [“UserGroup”] = minCursor 。当前值;
#------------------------------------------------- -------------------------
Document.Pages:
如果Document.Properties [“UserGroup”] ==“Restricted”:
if Page.Title ==“Detail”:
Document.Pages.Remove(Page)
第4步:创建一个名为“DateTimeStamp”的文档属性,并为上面分配我们创建的脚本。
步骤5:创建一个简单的信息链接,其中包含一个应该获取当前DateTimeStamp的元素
SELECT
SYSTIMESTAMP AS“SYSTEMTIME”
FROM
“SYS”。“DUAL”D1
WHERE
步骤6:将此表导入到仪表板,并使用R脚本将SystemTime元素分配给文档属性“DateTimeStamp”(类似于步骤3b)
第7步:保存仪表板
现在,当您每次打开或刷新仪表板时,时间戳将不同,文档属性将更新,因此将触发Python脚本。
PS:我们也可以使用JScript在Open of Dashboard上触发Python脚本。此外,为防止用户在打开DXP后单击“撤消”并恢复已删除的页面,请在每个要删除的页面上包含相同的javascript触发器。然后,即使用户在打开文件时撤消删除,每次导航到禁止页面时,它都会触发删除页面的脚本。如果他们撤消了,它会将他们带回起始页面,因此他们永远不会看到禁止的页面。
如需要联系TIBCO原厂采购,各位可以访问如下链接
https://www.tibco.com/company/locations
中国北京Main Office Phone
+86 10 8341 3723