0

私は Alfresco 5.1 Community を使用しています。たとえば、現在ログインしているユーザーのプロパティ値を取得しようとしています。

 "{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

4 に答える 4

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

}
于 2016-03-25T17:42:34.047 に答える
0
String name = AuthenticationUtil.getFullyAuthenticatedUser()

これを使用できます。うまくいくかどうか教えてください。

于 2016-03-26T10:38:04.110 に答える