簡體   English   中英

從露天數據庫中選擇用戶,組和站點

[英]Selecting users,groups and site from alfresco database

我想選擇用戶,他們屬於哪個組以及他們的站點。 我想要一個postgre sql查詢。

我已經找到了這些查詢,但是如果可能的話,我希望將它們與join結合使用。

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;

我建議盡可能用Java創建網絡腳本,以實現快速高效的操作!

我找到了解決方案! 我將腳本放在公司主頁>數據字典> Web腳本>組織>露天>測試

如您所見,我在“ 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中訪問結果

嘗試此查詢以獲取人員和組

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;`

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM