获取JAVA人Alfresco的财产

时间:2016-03-25 15:20:36

标签: alfresco alfresco-share alfresco-webscripts

我正在使用Alfresco 5.1社区,并且我试图在我拥有的用户中获取当前人员的属性值:

 "{http://www.someco.org/model/people/1.0}customProperty"

我如何在java中获得这个?

是自定义属性,因此,在http://localhost:8080/alfresco/service/api/people中它不会出现。我怎么能这样做?

我尝试至少获得nodeRef:

protected ServiceRegistry getServiceRegistry() {
        ProcessEngineConfigurationImpl config = Context.getProcessEngineConfiguration();
        if (config != null) {
            // Fetch the registry that is injected in the activiti spring-configuration
            ServiceRegistry registry = (ServiceRegistry) config.getBeans().get(ActivitiConstants.SERVICE_REGISTRY_BEAN_KEY);

            if (registry == null) {
                throw new RuntimeException("Service-registry not present in ProcessEngineConfiguration beans, expected ServiceRegistry with key" + ActivitiConstants.SERVICE_REGISTRY_BEAN_KEY);
            }

            return registry;
        }
        throw new IllegalStateException("No ProcessEngineConfiguration found in active context");
    }

    public void writeToCatalina() {
        PersonService personService = getServiceRegistry().getPersonService();
        System.out.println("test");
        String name = AuthenticationUtil.getFullyAuthenticatedUser();
        System.out.println(name);
        NodeRef personRef = personService.getPerson(name);
        System.out.println(personRef);
    }

但我得到了:

  

在活动上下文中找不到ProcessEngineConfiguration

帮助我!

4 个答案:

答案 0 :(得分:2)

您可以使用CMIS查询Alfresco并调用API:

GET /alfresco/service/api/people/{userName}.

首先,您可以定义创建会话CmisSession的方法:

public Session getCmisSession() {

    logger.debug("Starting: getCmisSession()");

    // default factory implementation
    SessionFactory factory = SessionFactoryImpl.newInstance();
    Map<String, String> parameter = new HashMap<String, String>();

    // connection settings
    parameter.put(SessionParameter.ATOMPUB_URL, url + ATOMPUB_URL);
    parameter.put(SessionParameter.BINDING_TYPE, BindingType.ATOMPUB.value());
    parameter.put(SessionParameter.AUTH_HTTP_BASIC, "true");
    parameter.put(SessionParameter.USER, username);
    parameter.put(SessionParameter.PASSWORD, password);
    parameter.put(SessionParameter.OBJECT_FACTORY_CLASS, "org.alfresco.cmis.client.impl.AlfrescoObjectFactoryImpl");

    List<Repository> repositories = factory.getRepositories(parameter);

    return repositories.get(0).createSession();
}

然后执行查询(此方法返回多个结果,您可能需要更改它):

public void doQuery(String cql, int maxItems) {

    Session cmisSession = getCmisSession();

    OperationContext oc = new OperationContextImpl();
    oc.setMaxItemsPerPage(maxItems);

    ItemIterable<QueryResult> results = cmisSession.query(cql, false, oc);

    for (QueryResult result : results) {
        for (PropertyData<?> prop : result.getProperties()) {
            logger.debug(prop.getQueryName() + ": " + prop.getFirstValue());
        }

    }

}

如果您需要获取令牌,请使用:

public String getAuthenticationTicket() {

    try {   

        logger.info("ALFRESCO: Starting connection...");

        RestTemplate restTemplate = new RestTemplate();
        Map<String, String> params = new HashMap<String, String>();
        params.put("user", username);
        params.put("password", password);
        Source result = restTemplate.getForObject(url + AFMConstants.URL_LOGIN_PARAM, Source.class, params);

        logger.info("ALFRESCO: CONNECTED!");

        XPathOperations xpath = new Jaxp13XPathTemplate();          
        return xpath.evaluateAsString("//ticket", result);
    }
    catch (RestClientException ex) {
        logger.error("FATAL ERROR - Alfresco Authentication failed - getAuthenticationTicket() - "  + ex );
        return null;
    }       
    catch (Exception ex) {          
        logger.error("FATAL ERROR - Alfresco Authentication failed - getAuthenticationTicket() - "  + ex );
        return null;
    }

}

答案 1 :(得分:1)

您需要使用this API获取用户noderef,然后访问其属性this way

编辑:您需要在bean上注入服务注册表!

答案 2 :(得分:0)

String name = AuthenticationUtil.getFullyAuthenticatedUser()

你可以用它。如果有效,请告诉我。

答案 3 :(得分:0)

这将为您提供当前登录的用户名和详细信息。

new SupportMapFragment()