Wednesday, November 20, 2024

#1043 - OIC Integration Flow Error Raising the Alarm

Simple requirement here - send me an email as soon as integration NN fails.

Here is my integration - 

I've done the saveOrder Map so as to ensure an error is thrown on the Netsuite invoke.

I now go to the OCI Service Metrics for my OIC instance - 

Go to Failed Messages - click on View query in Metrics Explorer -

We will edit the query to only show errors from the integration - ProcessOrder4Netsuite




Now to the Metric Dimensions -


The default entry specifies the OIC instance. Click on Additional Dimensions so we can narrow the query down to just our integration -  

flowCode identifies the integration - 

I execute the integration two more times, throwing 2 more errors -

Looks good - now to creating the alarm - 

I need to add a name - 

Now to the trigger rule - here is the default rules generated, which I need to edit.


Now to the Destination of the Alarm - 

A Topic needs to be defined - 
Click on Create a topic -

Note the various Subscription protocols supported - I select Email.


I click Create topic and subscription and then Save alarm.

I immediately receive an email asking me to confirm my subscription; this I do.

I now run the integration again - 

I check out the Alarm definition - 

The alarm has fired, so I check my email -

10 minutes later I receive an email telling me the alarm has been reset - 


I can only specify one email for the notification topic, so, if I need more, I'd need to use a DL.

Error Notification via a scheduled job


Another approach is to create a scheduled job, which uses the OIC Factory api to check for errors in my integration. 

The api call I use is as follows - https://design.integration.us-phoenix-1.ocp.oraclecloud.com/ic/api/integration/v1/monitoring/errors?integrationInstance=myInstance&q={timewindow: '1h', projectCode: 'AA_OIC_BASICS'}

Here is my project - 

I test the api in Postman and check the data returned -


As you can see, this contains lots of salient info. 

I create a REST connection for the Factory API  and use it in my scheduled integration -


































 

Thursday, November 14, 2024

#1042 - Processing Text Files in OIC

The use case is simple here - I've got a text file, cities.txt, I need to process in OIC. The file is as follows - 

The file structure is as follows - multiple city records, each with the following format - cityCode (4), countryCode (3), cityShortName(35), creationDate(10), cityLongName(60), nextUpdateDate(10).

  

I will require a native XSD (nXSD) to process this file. So where do I get such?

This is where my old buddy, a buddy I've long neglected, comes to my aid - JDeveloper. I've used JDev to create SOA Composites in the past and it does contain an nXSD generator.


Here is the nXSD it generated, based on the file above -

I created a new project in JDeveloper and included my cities.txt file.

The NXSD Schema wizard uses the text file as input - 





I then use the ruler to specify the field lengths - 

The result is as follows, I did change the default element names - 

<xsd:element name="Cities">

    <xsd:complexType>

      <xsd:sequence>

        <xsd:element name="City" minOccurs="1" maxOccurs="unbounded" nxsd:style="array" nxsd:cellSeparatedBy="${eol}">

          <xsd:complexType>

            <xsd:sequence>

              <xsd:element name="cityCode" type="xsd:string" nxsd:style="fixedLength" nxsd:length="4"/>

              <xsd:element name="countryCode" type="xsd:string" nxsd:style="fixedLength" nxsd:length="3"/>

              <xsd:element name="cityShort" type="xsd:string" nxsd:style="fixedLength" nxsd:length="35"/>

              <xsd:element name="creationDate" type="xsd:string" nxsd:style="fixedLength" nxsd:length="10"/>

              <xsd:element name="cityLong" type="xsd:string" nxsd:style="fixedLength" nxsd:length="60"/>

              <xsd:element name="nextUpdateDate" type="xsd:string" nxsd:style="fixedLength" nxsd:length="10"/>

            </xsd:sequence>

          </xsd:complexType>

        </xsd:element>

      </xsd:sequence>

    </xsd:complexType>

  </xsd:element>

Now to leveraging this in OIC - I copy the file to a OIC File Server folder -

The flow of the integration is as follows - 

ListFile is configured as follows - 
GetFileRef is configured as follows - 

filename is passed via the MAP action - 



ReadFile is configured as follows - 


ForEach City is configured as follows - 

The Log Action - 

Activate and test -