Skip to content

Instantly share code, notes, and snippets.

@chumpa
Created December 21, 2021 08:28
Show Gist options
  • Save chumpa/e091362c2c72735c6cfd1272db4736a3 to your computer and use it in GitHub Desktop.
Save chumpa/e091362c2c72735c6cfd1272db4736a3 to your computer and use it in GitHub Desktop.
CPI MessageHistory
import org.apache.camel.*
import java.time.Clock
import java.time.Instant
import java.time.ZoneId
import java.time.format.DateTimeFormatter
CpiMsg finish(CpiMsg msg) {
String body = msg.getBody(String)
List<MessageHistory> history = msg.properties.CamelMessageHistory
StringBuilder sb = new StringBuilder()
String pn = null
ZoneId msk = ZoneId.of("Europe/Moscow")
history.each {MessageHistory mh ->
NamedNode n = mh.node
if (mh.routeId!=pn) {
pn = mh.routeId
String t = DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(Instant.ofEpochMilli(mh.time).atZone(msk))
sb << "${mh.routeId}\t$t\n"
}
String s = mh.elapsed ? "${mh.elapsed}ms" : ""
sb << "\t$s\t#${n.id} ${n.label}\n"
}
msg.setBody(sb as String)
msg
}
Вывод будет:
=====================================
Process_99697 2021-12-21T11:13:17.166+03:00
#to1650 sap-pp-util://sender
#to1651 sap-size-limit://limit?body=41943040&attachments=
#removeHeaders362 removeHeaders[*]
#CallActivity_99703_1007049959917357 direct:Process_17
Process_17 2021-12-21T11:13:17.172+03:00
7ms #CallActivity_21_1007049973868911 setProperty[empty]
5ms #CallActivity_23_1007049974894400 setHeader[scriptFile]
#setHeader2561 setHeader[functionName]
#setHeader2562 setHeader[scriptFileType]
423ms #bean1114 bean[ref:scriptprocessor method:process]
6468ms #MessageFlow_81_1007049975514603 odata:GET_ENTRY?serviceUri=https://my399999.crm.ondemand.com/sap/c4c/odata/v1/c4codataapi/&resourcePath=RAW(ServiceRequestCollection(ObjectID='${property.RootEntityID}'))&alias=RAW(Techuser)&authenticationType=Basic&retrieveAllPages=true&oDataMethod=GET_ENTRY&contentType=application/atom+xml&componentContentType=xml&receiveTimeOut=300000&proxyType=default&SystemQueryOption=RAW($expand=ServiceRequestAttachmentFolder)&retryOnFailure=false&allowRequestHeaders=false&setErrorResponseBody=true&isKeyAutoGenerated=true&allowResponseHeaders=false&isCSRFEnabled=true&serviceType=HCIOData&allowHttpSuccessPassThrough=true&adapterVersion=1.18.0&validateSystemQueryOption=true
12ms #CallActivity_99665_1007050076863604 setHeader[scriptFile]
#setHeader2563 setHeader[functionName]
#setHeader2564 setHeader[scriptFileType]
15ms #bean1115 bean[ref:scriptprocessor method:process]
#ExclusiveGateway_99685_1007050077576629 when[simple{${property.ProcessingTypeCode} == 'ZSRR'}]choice[]
3435ms #MessageFlow_99695_1007050078252889 odata:GET_FEED?serviceUri=https://my399999.crm.ondemand.com/sap/c4c/odata/v1/c4codataapi/&resourcePath=RAW(ServiceRequestServiceReferenceObjectCollection)&alias=RAW(admin)&authenticationType=Basic&retrieveAllPages=true&oDataMethod=GET_FEED&contentType=application/atom+xml&componentContentType=xml&receiveTimeOut=300000&proxyType=default&SystemQueryOption=RAW($filter=ParentObjectID eq '${property.EntityID}')&retryOnFailure=false&allowRequestHeaders=false&setErrorResponseBody=true&isKeyAutoGenerated=true&allowResponseHeaders=false&isCSRFEnabled=true&serviceType=HCIOData&allowHttpSuccessPassThrough=true&adapterVersion=1.18.0&validateSystemQueryOption=true
23ms #CallActivity_99692_1007050079504123 setHeader[scriptFile]
#setHeader2565 setHeader[functionName]
#setHeader2566 setHeader[scriptFileType]
88ms #bean1116 bean[ref:scriptprocessor method:process]
734ms #CallActivity_99683_1007050080571997 direct:Process_99667
Process_99667 2021-12-21T11:13:27.674+03:00
60ms #CallActivity_99716_1007049943426020 sap-xml-validator:/xsd/ClaimsEntityPOST.xsd
27ms #MessageFlow_99675_1007049943955110 convertBodyTo[java.lang.String]
633ms #to1649 odata:batch?serviceUri=https://adm.shop/odata2webservices/InboundClaim&enableBatchResponseChangesetParts=true&resourcePath=RAW(batch)&alias=RAW(CloudCommerceCredential)&authenticationType=Basic&retrieveAllPages=true&oDataMethod=batch&contentType=application/atom+xml&componentContentType=xml&receiveTimeOut=300000&proxyType=default&retryOnFailure=false&allowRequestHeaders=false&setErrorResponseBody=true&isKeyAutoGenerated=true&allowResponseHeaders=false&isCSRFEnabled=true&serviceType=HCIOData&customQueryInBatch=true&allowHttpSuccessPassThrough=true&adapterVersion=1.18.0&validateSystemQueryOption=true
Process_17 2021-12-21T11:13:28.394+03:00
20ms #CallActivity_99708_1007050083956422 setHeader[scriptFile]
#setHeader2567 setHeader[functionName]
#setHeader2568 setHeader[scriptFileType]
#bean1117 bean[ref:scriptprocessor method:process]
@chumpa
Copy link
Author

chumpa commented Dec 21, 2021

Что можно улучшить:

  1. 2021-12-21T11:13:17.166+03:00 выводить только для первого процесса
  2. сделать игнор лист для некоторых лейблов вида sap-size-limit: и setHeader[scriptFile], setHeader[functionName] если у них 0ms
  3. для длинных идентификаторов #ExclusiveGateway_99685_1007050077576629 обрезать до #ExclusiveGateway_99685
  4. добавить в конце вывод датывремени последнего процесса

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment