Пользовательская функция TIBCO BW6 с типом возврата dateTime

Я создаю пользовательскую функцию для BW6, которая должна анализировать форматированную строку ISO 8601 в объект dateTime.

До сих пор я построил эту функцию:

  @XPathFunction(helpText = "Parse a ISO 8601 datetime string",
      parameters = {
          @XPathFunctionParameter(name = "isoDateTimeString", optional = false)
      },
      returnType = "dateTime")
  public Date parseIsoDateTime(String isoDateTimeString) throws ParseException {
    StringBuilder dateFormatBuilder = new StringBuilder();
    dateFormatBuilder.append("yyyy-MM-dd'T'HH:mm:ss");
    if (isoDateTimeString.contains(".")) {
      dateFormatBuilder.append(".SSS");
    }
    DateFormat dateFormat = new SimpleDateFormat(dateFormatBuilder.toString());

    return dateFormat.parse(isoDateTimeString);
  }

Когда я запускаю эту функцию, BW выдает исключение

09:02:42.412 ERROR [bwEngThread:In-Memory Process Worker-1] com.tibco.bw.core - TIBCO-BW-CORE-500050: The BW process [demo.parse-datetime.module.Process] instance faulted, JobId [bw0a100], ProcessInstanceId [bw0a100], ParentProcessInstanceId [-], Module [demo.parse-datetime.module:1.0.0.qualifier], Application [demo.parse-datetime:1.0].  
   <CausedBy> TIBCO-BW-CORE-500058: Activity [SetDateTimeValue] XML related error.  
   <CausedBy> com.tibco.pvm.dataexch.xml.util.exceptions.PmxException: PVM-XML-106017: Expression Evaluation Error: 'bxcom:parseIsoDateTime($dateTimeAsString)'
   <CausedBy> java.lang.ClassCastException: java.util.Date cannot be cast to com.tibco.xml.data.primitive.XmlAtomicValue

Итак, как я могу вернуть объект XML dateTime из пользовательской функции xslt в BW6.


person Johan Vergeer    schedule 21.12.2018    source источник


Ответы (1)


Вам необходимо создать проект подключаемого модуля, чтобы разрешить пользовательскую функцию XPath. (Вам понадобится ActiveMatrix Комплект разработки подключаемых модулей BusinessWorks™)

Создать пользовательский XPath-функции

Если вы хотите использовать их во время разработки, вам необходимо экспортировать проект подключаемого модуля и включить банку в качестве зависимости.

Использование пользовательского Функция XPath во время разработки и выполнения

person NeerPatel    schedule 22.01.2019