首页 > 解决方案 > 从内容存储中检索作业分发列表

问题描述

使用 Cognos 10.2,我试图获取当前计划的所有报告的列表,以及计划报告将发送到的分发列表。

我可以使用以下代码获取自行安排的所有独立报告的列表及其分发列表:

select ob2.cmid, 
c.name as className, 
n.name as objectName,
o.DELIVOPTIONS as DeliveryOptions

from CMOBJPROPS2 p

inner join (select cmid, cast(DELIVOPTIONS as nvarchar(2048)) as DELIVOPTIONS from CMOBJPROPS26) as o on p.cmid=o.cmid
inner join CMOBJECTS ob on ob.cmid=o.cmid
inner join CMOBJECTS ob2 on ob.pcmid=ob2.cmid
inner join CMOBJNAMES n on n.cmid=ob2.cmid
inner join CMCLASSES c on ob2.classid=c.classid 

但是,我也是在 cognos 的工作中安排的所有报告之后。上面显示了计划的工作/事件,但没有显示工作及其分发列表中的报告。

我已经以表格形式运行了 CMOBJPROPS26 表,并且 DELIVOPTIONS 字段似乎包含我所追求的数据,我可以使用 CMID 将其加入到报告名称/作业中,但是当我查看出现的信息时,我相信电子邮件地址应该是它似乎有一个长字符串。我认为这可能是因为来自我们工作 AD 组的电子邮件连接到 Cognos 并且没有存储在 Cognos 本身中。系统必须查找或知道如何将这个长字符串翻译成工作 AD 组的名称,我想知道是否有人知道我该怎么做?

我的最终目标是有一个输出列表,为我提供报告名称 - 包含分发列表的所有报告的分发列表。

非常感谢

标签: cognoscognos-10

解决方案


我想我以前试过这个,我在有限的时间内得出的结论是,“不能从这里到达那里。” 请记住,这是一个专有系统。IBM 不喜欢我们在他们的数据库中胡闹。IBM 会说您需要使用 SDK。

话虽如此...

看起来您发布了一小部分 DELIVOPTIONS 值,我认为这是错误的。我认为您需要 DELIVOPTIONS 的两件作品。它们被标记为totoAddress。您需要将<value>每个标签中的标签解析为 XML。

toAddress,从数据中读取电子邮件地址。

to,从数据中读取 CAMID 值。然后,您可以将该结果加入 CMOBJECTS33 以查找用户名。但这仅适用于在 Content Store 中注册的用户。这意味着可能只有登录到 Cognos 的用户。此外,我在 Content Store 中看不到用户的电子邮件地址。因此,对于安全组和通讯组(可能还有用户),您需要使用直接针对您的外部命名空间的查询来查找它(例如使用 openrowset 从数据库服务器查询您的 LDAP 系统,但您没有说什么您使用的 RDBMS。)。

可能不是你想要的答案...



更新以包括作业计划(以上是报告计划)

电子邮件地址信息与 jobStepDefinition 对象。因此,如果您的 jobDefinition 对象(作业)是 CMID 123,您将获得 jobStepDefinition(jobDefinition 对象的子对象),例如...

select o.CMID
, n.NAME as JobStepDefinition
, c.NAME as ClassName
, s.DELIVOPTIONS

from CMOBJECTS o
  inner join CMOBJNAMES n on n.CMID = o.CMID
  inner join CMCLASSES c on c.CLASSID = o.CLASSID
  inner join CMOBJPROPS26 s on s.CMID = o.CMID

where n.ISDEFAULT = 1
  and o.PCMID = 123

(这也输出类名,因此您可以验证)
这就是基础。如果需要,您可以通过 CTE 获得更好的体验。


现在您需要将一些内容解析为 XML。您将按照我对时间表(上图)所说的方式来评估它们。

toAddress, ccAddress,bccAddress包含电子邮件地址。
to, cc,bcc包含 CAMID 值。

祝你好运。

哦,我还没有弄清楚如何列出在作业中运行的所有报告。同样,SDK 在这方面可能更容易使用。


推荐阅读