从alfresco数据库中选择用户,组和站点

时间:2014-06-08 13:36:33

标签: postgresql alfresco

我想选择用户,他们所属的群组及其网站。我想用一个postgre sql查询。

我已经找到了这些查询,但如果可能,我希望它们与加入相结合。

select * from alf_permission

select * from ALF_AUTHORITY 

select * from ALF_CHILD_ASSOC where CHILD_NODE_NAME like ‘group%’

select * from ALF_CHILD_ASSOC where QNAME_LOCALNAME like ‘GROUP%’



select
    node_id,
    string_agg(string_value, ',')
from (
    select
        node_id,
        qname_id,
        (select local_name from alf_qname where id = qname_id) as qname_type,
        string_value
    from alf_node_properties
    where node_id in (
        select id from alf_node 
        where type_qname_id = (
            select id from alf_qname where local_name = 'person'
        )
        and qname_id in (
            select id
            from  alf_qname 
            where local_name in (
                'username',
                'firstName',
                'lastName',
                'email'     
            )
        )
    )
) alf_users
group by node_id;

3 个答案:

答案 0 :(得分:1)

我建议用Java创建webscript,快速高效地完成这项工作!

答案 1 :(得分:1)

我找到了解决方案! 我把脚本放在公司主页>数据字典> Web脚本> org> alfresco>测试

正如您所见,我在“alfresco”文件夹中创建了“test”文件夹,并在其中放置了这三个文件。

hello.get.html.ftl文件

<table border>
<tr>
    <th>Username</th>
    <th>Groups</th>
    <th>Sites</th>
</tr>

<#list test as child>
<tr>
    <td>${child['username']}</td>
    <td>${child['groups']}</td>
    <td>${child['sites']}</td>
</tr>
</#list>
</table>

hello.get.desc.xml

<webscript>
  <shortname>Hello</shortname>
  <description>Polite greeting</description>
  <url>/test/hello</url>
  <authentication>user</authentication>
</webscript>

hello.get.js

var gens = search.luceneSearch("TYPE:\"{http://www.alfresco.org/model/content/1.0}person\"");
var a = [];

for (var i=0; i<gens.length;i++) {
 var username = gens[i].properties["cm:userName"];

 var b = [];
 var groups = people.getContainerGroups(gens[i]);
 for(var j=0; j<groups.length; j++) {
  b.push(groups[j].properties['authorityDisplayName']);
 }

 var sites = siteService.listUserSites(username);
 var g=[]
 for(var j=0; j<sites.length; j++) {
        g.push(sites[j]['shortName']);
 }

 //a.push('\n\n\n'+username+'\groups--> '+ b.join(', ') + '\nsites--> '+g.join(', '));
 a.push({
    'username' : username,
    'groups' : b.join(', '),
    'sites' : g.join(', ')
 })
}

model.test = a;

您可以访问your_domain_name / alfresco / service / test / hello中的结果

答案 2 :(得分:0)

尝试使用此查询获取人员和组

select 
ca.id,
ca.parent_node_id,
ca.child_node_id,
ca.qname_localname,
np.string_value
from alf_child_assoc as ca
join alf_node as child on child.id = ca.child_node_id
join alf_node as parent on parent.id = ca.parent_node_id
join alf_qname as q1 on q1.id = parent.type_qname_id
join alf_qname as q2 on q2.id = child.type_qname_id
join alf_node_properties as np on np.node_id = parent.id
where q1.local_name = 'authorityContainer'
and q2.local_name = 'person'
and np.qname_id = (select id from alf_qname where local_name = 
 'authorityDisplayName')
order by ca.qname_localname;`