执行服务层 API 调用

Cúram 事件适配器上可调用三种 API 方法来创建 CAP 消息并将其发布到 Intelligent Operations Center 的 WebSphere Message Broker 实例中。

SimplePublisher

curam.eventadaptor.publishers.intf.SimplePublisherIntf.publish(SimpleHeader, EventAdaptorNVPairList, EXTERNALEVENTTYPEEntry)

SimplePublisher 接口允许发布具有多个缺省值填充值的 CAP 消息。此方法将 SimpleHeader 中的值和缺省值分配给 CAPHeader。随后此 CAPHeader 将作为参数传递给 curam.eventadaptor.publishers.intf.CAPPublisherIntf.publish 方法。

SimpleHeader 允许在 CAP 消息中设置一些值。可设置的值包括:

其余为缺省值,根据环境变量(在代码表中定义)进行设置。

表 1. 缺省 CAP 事件值
值名称 缺省值
标识 随机值
类别 “事件”
代码 “其他”
确定性 “已观测”
消息类型 “警报”
范围 “公共”
严重性 “中等”
状态 “实际”
紧急程度 “未知”

以下代码段说明如何使用 SimplePublisherIntf

图 1. 使用 SimplePublisher
@Inject
private TargetSystemDAO targetSystemDAO;

@Inject
SimplePublisher simplePublisher;

public ClassConstructor(string arg0) {
  super(arg0);
  GuiceWrapper.getInjector().injectMembers(this);
}

public simplePublisherSample() {
  // How to set up the variables that are passed to the publish method
  
  SimpleHeader simpleHeader = new SimpleHeader();
  
  simpleHeader.description = "Sample description";
  simpleHeader.event = "Sample event title";
  simpleHeader.headline = "Sample headline";
  simpleHeader.sender = "Sample sender";
  simpleHeader.onset = header. DateTime.getCurrentDateTime();
  
  EventAdaptorNVPair nvPair1 = new EventAdaptorNVPair();
  nvPair1.name = "parameter1 name";
  nvPair1.value = "parameter1 value";
  
  EventAdaptorNVPair nvPair2 = new EventAdaptorNVPair();
  nvPair2.name = "parameter2 name";
  nvPair2.value = "parameter2 value";
  
  nvPairList.dtls.add(nvPair1);
  nvPairList.dtls.add(nvPair2);
  
  // Call the publish method
  simplePublisher.publish(simpleHeader, nvPairList, EXTERNALEVENTTYPEEntry.EVENTADAPTOR_SAMPLE);
}

CAPPublisher

curam.eventadaptor.publishers.intf.CAPPublisherIntf.publish(CAPHeader, EventAdaptorNVPairList, EXTERNALEVENTTYPEEntry)

CAPPublisher 接口允许发布所有值都由 CAPHeader 参数中传递的值来填充的 CAP 消息。

此方法会验证 CAPHeader。随后会使用头内容通过 capXMLBuilder.convertToDocument() 来构建 CAP XML。然后会将此变换中的输出作为参数传递给 curam.eventadaptor.publishers.intf.XMLPublisherIntf.publish 方法。

以下代码段说明如何使用 CAPPublisherIntf

图 2. 使用 CAPPublisher
@Inject
private TargetSystemDAO targetSystemDAO;

@Inject
CAPPublisher capPublisher;

public ClassConstructor(string arg0) {
  super(arg0);
  GuiceWrapper.getInjector().injectMembers(this);
}

public capPublisherSample() {
  // How to set up the variables that are passed to the publish method
  
  CAPHeader capHeader = new CAPHeader();
  
  capHeader.description = "Sample description";
  capHeader.event = "Sample event name";
  capHeader.headline = "Sample headline";
  capHeader.identifier = "sampleIdentifier";
  capHeader.sender = "Sample sender";
  capHeader.category = EAALERTINFOCATEGORY.FIRE;
  capHeader.certainty = EAALERTINFOCERTAINTY.LIKELY;
  capHeader.messageType = EAALERTMESSAGETYPE.UPDATE;
  capHeader.onset = DateTime.getCurrentDateTime();
  capHeader.senderName = "the sendername";
  capHeader.scope = EAALERTSCOPE.PRIVATE;
  capHeader.severity = EAALERTINFOSEVERITY.EXTREME;
  capHeader.status = EAALERTSTATUS.TEST;
  capHeader.urgency = EAALERTINFOURGENCY.EXPECTED;
  capHeader.code = EAALERTCODE.EVENT;
  capHeader.webIdentifier = "http://www.curamsoftware.com"; 

  EventAdaptorNVPairList nvPairList = new EventAdaptorNVPairList();

  EventAdaptorNVPair nvPair1 = new EventAdaptorNVPair();
  nvPair1.name = "parameter1 name";
  nvPair1.value = "parameter1 value";

  EventAdaptorNVPair nvPair2 = new EventAdaptorNVPair();
  nvPair2.name = "parameter2 name";
  nvPair2.value = "parameter2 value";

  nvPairList.dtls.add(nvPair1);
  nvPairList.dtls.add(nvPair2);
  
  // Call the publish method
  capPublisher.publish(capHeader, nvPairList, EXTERNALEVENTTYPEEntry.EVENTADAPTOR_SAMPLE);
}

XMLPublisher

curam.eventadaptor.publishers.intf.XMLPublisherImpl.publish(Document, EXTERNALEVENTTYPEEntry)

XMLPublisher 接口允许发布具有文档参数中传递的 XML 文档的 SOAP 消息。由于 XML 是定制的,所以这能最大程度地控制任何 API 发布。当“事件适配器”要和不与 CAP 消息配合使用的外部服务进行交互时,或者当首选项是定制工种 CAP 消息时,将使用此方法。

如果“外部事件类型”已启用,那么它将验证 XML,然后将文档发布到 Web Service 端点。如果“事件类型”未启用,那么它将不会发布文档。

以下代码段说明如何使用 XMLPublisherIntf

图 3. 使用 XMLPublisher
@Inject
private TargetSystemDAO targetSystemDAO;

@Inject
XMLPublisher xmlPublisher;

public ClassConstructor(string arg0) {
  super(arg0);
  GuiceWrapper.getInjector().injectMembers(this);
}

public xmlPublisherSample(Document document) {
  // Call the publish method
  XmlPublisher.publish(document, EXTERNALEVENTTYPEEntry.EVENTADAPTOR_SAMPLE);
}