2016-10-11 2 views
1

Я пытаюсь использовать соединитель http, который поставляется со стандартной реализацией Camunda, без везения. Каждый раз, когда я запускаю свой рабочий процесс, экземпляр просто замораживает эту активность. Я использую этот класс в исполнении listnener и код, который я использую это:Невозможно использовать http-коннектор

import org.apache.ibatis.logging.LogFactory; 
import org.camunda.bpm.engine.delegate.DelegateExecution; 
import org.camunda.bpm.engine.delegate.Expression; 
import org.camunda.bpm.engine.delegate.JavaDelegate; 
import org.camunda.bpm.engine.impl.util.json.JSONObject; 
import org.camunda.connect.Connectors; 
import org.camunda.connect.ConnectorException; 
import org.camunda.connect.httpclient.HttpConnector; 
import org.camunda.connect.httpclient.HttpResponse; 
import org.camunda.connect.httpclient.impl.HttpConnectorImpl; 
import org.camunda.connect.impl.DebugRequestInterceptor; 



public class APIAudit implements JavaDelegate { 
static { 
    LogFactory.useSlf4jLogging(); // MyBatis 
    } 

private static final java.util.logging.Logger LOGGER = java.util.logging.Logger.getLogger(Thread.currentThread().getStackTrace()[0].getClassName()); 

private Expression tokenField; 
private Expression apiServerField; 
private Expression questionIDField; 
private Expression subjectField; 
private Expression bodyField; 

public void execute(DelegateExecution arg0) throws Exception { 

    String tokenValue = (String) tokenField.getValue(arg0); 
    String apiServerValue = (String) apiServerField.getValue(arg0); 
    String questionIDValue = (String) questionIDField.getValue(arg0); 
    String subjectValue = (String) subjectField.getValue(arg0); 
    String bodyValue = (String) bodyField.getValue(arg0); 
    if (apiServerValue != null) { 
     String url = "http://" + apiServerValue + "/v1.0/announcement"; 

     LOGGER.info("token: " + tokenValue); 
     LOGGER.info("apiServer: " + apiServerValue); 
     LOGGER.info("questionID: " + questionIDValue); 
     LOGGER.info("subject: " + subjectValue); 
     LOGGER.info("body: " + bodyValue); 
     LOGGER.info("url: " + url); 

     JSONObject jsonBody = new JSONObject(); 
     jsonBody.put("access_token", tokenValue); 
     jsonBody.put("source", "SYSTEM"); 
     jsonBody.put("target", "AUDIT"); 
     jsonBody.put("tType", "system"); 
     jsonBody.put("aType", "auditLog"); 
     jsonBody.put("affectedItem", questionIDValue); 
     jsonBody.put("subject", subjectValue); 
     jsonBody.put("body", bodyValue); 
     jsonBody.put("language", "EN"); 

     try { 
      LOGGER.info("Generating connection"); 

      HttpConnector http = Connectors.getConnector(HttpConnector.ID); 

      LOGGER.info(http.toString()); 
      DebugRequestInterceptor interceptor = new DebugRequestInterceptor(false); 
      http.addRequestInterceptor(interceptor); 

      LOGGER.info("JSON Body: " + jsonBody.toString()); 

      HttpResponse response = http.createRequest() 
             .post() 
             .url(url) 
             .contentType("application/json") 
             .payload(jsonBody.toString()) 
             .execute(); 

      Integer responseCode = response.getStatusCode(); 
      String responseBody = response.getResponse(); 
      response.close(); 
      LOGGER.info("[" + responseCode + "]: " + responseBody); 
     } catch (ConnectorException e) { 
      LOGGER.severe(e.getMessage()); 
     } 


    } else { 

     LOGGER.info("No APISERVER provided"); 

    } 

    LOGGER.info("Exiting"); 

} 
} 

Я уверен, что поля инъекция правильно работает с классовыми гравюр правильных значений. Я также использовал http-коннектор в javascript в том же самом действии без проблем.

Я использую этот подход, так как мне нужно сделать два разных вызова для внешних служб REST в одной и той же задаче, поэтому любые советы будут очень приветствуемыми.

ответ

0

Необходимо включить плагин подключаемого модуля процесса в конфигурации двигателя процесса. Не знаю, как вы настроили процесс двигатель, убедитесь, чтобы добавить этот плагин org.camunda.connect.plugin.impl.ConnectProcessEnginePlugin

Также проверьте следующее зависимостей

  1. Не добавлять как зависимости - connectors- все и http-коннектор.
  2. Обязательно проверьте журналы ошибок и посмотреть, есть ли у Вас какие-либо проблемы загрузки классов, связанных с HttpClient классов

Я уверен, что есть класс загрузки проблема с библиотекой HTTP-клиент. обязательно включите правильную версию разъемов - вся зависимость

Смежные вопросы