B2B Integration

Sterling B2B Integration

Come for answers, stay for best practices. All we're missing is you.

 View Only
  • 1.  Concurrency Issues - DATABASE B2Bi

    Posted Fri October 02, 2020 07:58 AM
    Hi all,

    I create a BP that received a request HTTP and get parameter from request and execute a simple INNER JOIN between MBX_MESSAGE and MBX_PATH in B2Bi database, but sometimes this is very slow, analysing the database, the B2Bi execute many query like similar example bellow, causing concurrency, someone already see something like this? how solve this?



    SELECT  D.NAME          AS WFD_NAME                       ,

                            SESS.SESSION_ID AS SESSION_ID                     ,

                            SESS.SESSION_ARCHIVE_ID                           ,

                            SESS.CHILD_SESSIONID                              ,

                            SESS.CON_START_TIME                               ,

                            SESS.CON_END_TIME                                 ,

                            SESS.DIS_START_TIME                               ,

                            SESS.DIS_END_TIME                                 ,

                            SESS.IS_LOCAL_INIT                                ,

                            SESS.ADAPTER_NAME                                 ,

                            SESS.ADAPTER_TYPE                                 ,

                            SESS.PS_INSTANCE                                  ,

                            SESS.CON_IS_SUCCESS                               ,

                            SESS.PROTOCOL                                     ,

                            SESS.SECURE_MODE                                  ,

                            SESS.ENDPOINT1                                    ,

                            SESS.ENDPORT1                                     ,

                            SESS.ENDPOINT2                                    ,

                            SESS.ENDPORT2                                     ,

                            SESS.DIS_IS_SUCCESS                               ,

                            SESS.STATUS_CODE                                  ,

                            SESS.ERROR_MSG                                    ,

                            SESS.START_WFID                                   ,

                            SESS.START_WFSTEP                                 ,

                            SESS.END_WFID                                     ,

                            SESS.END_WFSTEP                                   ,

                            SESS.PRINCIPAL                                    ,

                            XFER.XFER_ID                                      ,

                            XFER.SESSION_ARCHIVE_ID AS XFER_SESSION_ARCHIVE_ID,

                            XFER.IS_PUT                                       ,

                            XFER.DOC_ID                                       ,

                            XFER.IS_SUCCESS                                   ,

                            XFER.FILE_SIZE                                    ,

                            XFER.START_TIME                                   ,

                            XFER.END_TIME                                     ,

                            XFER.MBOX_PATH                                    ,

                            XFER.MESSAGE_ID                                   ,

                            XFER.MESSAGE_NAME                                 ,

                            XFER.REMOTE_FILENAME                              ,

                            XFER.DOC_NAME                                     ,

                            XFER.STATUS_CODE AS XFER_STATUS_CODE              ,

                            XFER.ERROR_MSG   AS XFER_ERROR_MSG                ,

                            XFER.IS_BIN_XFER                                  ,

                            XFER.KBYTES_XFER                                  ,

                            XFER.WFID                                         ,

                            XFER.WFSTEP                                       ,

                            XFER.IS_SECURE

                    FROM    ACT_SESSION SESS

                            LEFT OUTER JOIN ACT_XFER XFER

                            ON      SESS.SESSION_ID = XFER.SESSION_ID

                            LEFT OUTER JOIN WORKFLOW_CONTEXT WFC

                            ON      SESS.START_WFID         = WFC.WORKFLOW_ID

                                    AND WFC.ACTIVITYINFO_ID = 0

                            LEFT OUTER JOIN WFD D

                            ON      D.WFD_ID           = WFC.WFD_ID

                    WHERE   SESS.CON_END_TIME         >= TO_DATE(:1 , 'mm/dd/yyyy hh24:mi:ss')

                            AND SESS.DIS_END_TIME     IS NULL

                            AND SESS.PROTOCOL         IN ('SFTP','MailboxService','HTTP','FTP','Connect:Direct')

                            AND SESS.ADAPTER_NAME NOT IN ('MESAHttpServerAdapter')

                    UNION

                    SELECT  D.NAME          AS WFD_NAME                       ,

                            SESS.SESSION_ID AS SESSION_ID                     ,

                            SESS.SESSION_ARCHIVE_ID                           ,

                            SESS.CHILD_SESSIONID                              ,

                            SESS.CON_START_TIME                               ,

                            SESS.CON_END_TIME                                 ,

                            SESS.DIS_START_TIME                               ,

                            SESS.DIS_END_TIME                                 ,

                            SESS.IS_LOCAL_INIT                                ,

                            SESS.ADAPTER_NAME                                 ,

                            SESS.ADAPTER_TYPE                                 ,

                            SESS.PS_INSTANCE                                  ,

                            SESS.CON_IS_SUCCESS                               ,

                            SESS.PROTOCOL                                     ,

                            SESS.SECURE_MODE                                  ,

                            SESS.ENDPOINT1                                    ,

                            SESS.ENDPORT1                                     ,

                            SESS.ENDPOINT2                                    ,

                            SESS.ENDPORT2                                     ,

                            SESS.DIS_IS_SUCCESS                               ,

                            SESS.STATUS_CODE                                  ,

                            SESS.ERROR_MSG                                    ,

                            SESS.START_WFID                                   ,

                            SESS.START_WFSTEP                                 ,

                            SESS.END_WFID                                     ,

                            SESS.END_WFSTEP                                   ,

                            SESS.PRINCIPAL                                    ,

                            XFER.XFER_ID                                      ,

                            XFER.SESSION_ARCHIVE_ID AS XFER_SESSION_ARCHIVE_ID,

                            XFER.IS_PUT                                       ,

                            XFER.DOC_ID                                       ,

                            XFER.IS_SUCCESS                                   ,

                            XFER.FILE_SIZE                                    ,

                            XFER.START_TIME                                   ,

                            XFER.END_TIME                                     ,

                            XFER.MBOX_PATH                                    ,

                            XFER.MESSAGE_ID                                   ,

                            XFER.MESSAGE_NAME                                 ,

                            XFER.REMOTE_FILENAME                              ,

                            XFER.DOC_NAME                                     ,

                            XFER.STATUS_CODE AS XFER_STATUS_CODE              ,

                            XFER.ERROR_MSG   AS XFER_ERROR_MSG                ,

                            XFER.IS_BIN_XFER                                  ,

                            XFER.KBYTES_XFER                                  ,

                            XFER.WFID                                         ,

                            XFER.WFSTEP                                       ,

                            XFER.IS_SECURE

                    FROM    ACT_XFER XFER,

                            ACT_SESSION SESS

                            LEFT OUTER JOIN WORKFLOW_CONTEXT WFC

                            ON      SESS.START_WFID         = WFC.WORKFLOW_ID

                                    AND WFC.ACTIVITYINFO_ID = 0

                            LEFT OUTER JOIN WFD D

                            ON      D.WFD_ID           = WFC.WFD_ID

                    WHERE   XFER.START_TIME           >= TO_DATE(:2 , 'mm/dd/yyyy hh24:mi:ss')

                            AND XFER.END_TIME         IS NULL

                            AND XFER.SESSION_ID        = SESS.SESSION_ID

                            AND SESS.PROTOCOL         IN ('SFTP','MailboxService','HTTP','FTP','Connect:Direct')

                            AND SESS.ADAPTER_NAME NOT IN ('MESAHttpServerAdapter')

                    UNION

                    SELECT  D.NAME          AS WFD_NAME                       ,

                            SESS.SESSION_ID AS SESSION_ID                     ,

                            SESS.SESSION_ARCHIVE_ID                           ,

                            SESS.CHILD_SESSIONID                              ,

                            SESS.CON_START_TIME                               ,

                            SESS.CON_END_TIME                                 ,

                            SESS.DIS_START_TIME                               ,

                            SESS.DIS_END_TIME                                 ,

                            SESS.IS_LOCAL_INIT                                ,

                            SESS.ADAPTER_NAME                                 ,

                            SESS.ADAPTER_TYPE                                 ,

                            SESS.PS_INSTANCE                                  ,

                            SESS.CON_IS_SUCCESS                               ,

                            SESS.PROTOCOL                                     ,

                            SESS.SECURE_MODE                                  ,

                            SESS.ENDPOINT1                                    ,

                            SESS.ENDPORT1                                     ,

                            SESS.ENDPOINT2                                    ,

                            SESS.ENDPORT2                                     ,

                            SESS.DIS_IS_SUCCESS                               ,

                            SESS.STATUS_CODE                                  ,

                            SESS.ERROR_MSG                                    ,

                            SESS.START_WFID                                   ,

                            SESS.START_WFSTEP                                 ,

                            SESS.END_WFID                                     ,

                            SESS.END_WFSTEP                                   ,

                            SESS.PRINCIPAL                                    ,

                            XFER.XFER_ID                                      ,

                            XFER.SESSION_ARCHIVE_ID AS XFER_SESSION_ARCHIVE_ID,

                            XFER.IS_PUT                                       ,

                            XFER.DOC_ID                                       ,

                            XFER.IS_SUCCESS                                   ,

                            XFER.FILE_SIZE                                    ,

                            XFER.START_TIME                                   ,

                            XFER.END_TIME                                     ,

                            XFER.MBOX_PATH                                    ,

                            XFER.MESSAGE_ID                                   ,

                            XFER.MESSAGE_NAME                                 ,

                            XFER.REMOTE_FILENAME                              ,

                            XFER.DOC_NAME                                     ,

                            XFER.STATUS_CODE AS XFER_STATUS_CODE              ,

                            XFER.ERROR_MSG   AS XFER_ERROR_MSG                ,

                            XFER.IS_BIN_XFER                                  ,

                            XFER.KBYTES_XFER                                  ,

                            XFER.WFID                                         ,

                            XFER.WFSTEP                                       ,

                            XFER.IS_SECURE

                    FROM    ACT_SESSION SESS

                            LEFT OUTER JOIN ACT_XFER XFER

                            ON      SESS.SESSION_ID = XFER.SESSION_ID

                            LEFT OUTER JOIN WORKFLOW_CONTEXT WFC

                            ON      SESS.START_WFID         = WFC.WORKFLOW_ID

                                    AND WFC.ACTIVITYINFO_ID = 0

                            LEFT OUTER JOIN WFD D

                            ON      D.WFD_ID           = WFC.WFD_ID

                    WHERE   SESS.DIS_END_TIME         >= TO_DATE(:3 , 'mm/dd/yyyy hh24:mi:ss')

                            AND SESS.PROTOCOL         IN ('SFTP','MailboxService','HTTP','FTP','Connect:Direct')

                            AND SESS.ADAPTER_NAME NOT IN ('MESAHttpServerAdapter')

                    UNION

                    SELECT  D.NAME          AS WFD_NAME                       ,

                            SESS.SESSION_ID AS SESSION_ID                     ,

                            SESS.SESSION_ARCHIVE_ID                           ,

                            SESS.CHILD_SESSIONID                              ,

                            SESS.CON_START_TIME                               ,

                            SESS.CON_END_TIME                                 ,

                            SESS.DIS_START_TIME                               ,

                            SESS.DIS_END_TIME                                 ,

                            SESS.IS_LOCAL_INIT                                ,

                            SESS.ADAPTER_NAME                                 ,

                            SESS.ADAPTER_TYPE                                 ,

                            SESS.PS_INSTANCE                                  ,

                            SESS.CON_IS_SUCCESS                               ,

                            SESS.PROTOCOL                                     ,

                            SESS.SECURE_MODE                                  ,

                            SESS.ENDPOINT1                                    ,

                            SESS.ENDPORT1                                     ,

                            SESS.ENDPOINT2                                    ,

                            SESS.ENDPORT2                                     ,

                            SESS.DIS_IS_SUCCESS                               ,

                            SESS.STATUS_CODE                                  ,

                            SESS.ERROR_MSG                                    ,

                            SESS.START_WFID                                   ,

                            SESS.START_WFSTEP                                 ,

                            SESS.END_WFID                                     ,

                            SESS.END_WFSTEP                                   ,

                            SESS.PRINCIPAL                                    ,

                            XFER.XFER_ID                                      ,

                            XFER.SESSION_ARCHIVE_ID AS XFER_SESSION_ARCHIVE_ID,

                            XFER.IS_PUT                                       ,

                            XFER.DOC_ID                                       ,

                            XFER.IS_SUCCESS                                   ,

                            XFER.FILE_SIZE                                    ,

                            XFER.START_TIME                                   ,

                            XFER.END_TIME                                     ,

                            XFER.MBOX_PATH                                    ,

                            XFER.MESSAGE_ID                                   ,

                            XFER.MESSAGE_NAME                                 ,

                            XFER.REMOTE_FILENAME                              ,

                            XFER.DOC_NAME                                     ,

                            XFER.STATUS_CODE AS XFER_STATUS_CODE              ,

                            XFER.ERROR_MSG   AS XFER_ERROR_MSG                ,

                            XFER.IS_BIN_XFER                                  ,

                            XFER.KBYTES_XFER                                  ,

                            XFER.WFID                                         ,

                            XFER.WFSTEP                                       ,

                            XFER.IS_SECURE

                    FROM    ACT_XFER XFER,

                            ACT_SESSION SESS

                            LEFT OUTER JOIN WORKFLOW_CONTEXT WFC

                            ON      SESS.START_WFID         = WFC.WORKFLOW_ID

                                    AND WFC.ACTIVITYINFO_ID = 0

                            LEFT OUTER JOIN WFD D

                            ON      D.WFD_ID           = WFC.WFD_ID

                    WHERE   XFER.END_TIME             >= TO_DATE(:4 , 'mm/dd/yyyy hh24:mi:ss')

                            AND XFER.SESSION_ID        = SESS.SESSION_ID

                            AND SESS.PROTOCOL         IN ('SFTP','MailboxService','HTTP','FTP','Connect:Direct')

                            AND SESS.ADAPTER_NAME NOT IN ('MESAHttpServerAdapter')

                    ORDER BY SESSION_ID,

                            XFER_ID

            )

    WHERE   ROWNUM <5000

    ------------------------------
    Douglas Rezende
    ------------------------------

    #B2BIntegration
    #SupplyChain


  • 2.  RE: Concurrency Issues - DATABASE B2Bi

    Posted Sun October 04, 2020 03:48 AM
    Sterling B2Bi is very inconsistent in locking table, page and record. I wonder if you'll be able to fix this issue with such a large query. I would suggest executing one query at a time.

    -Dhiraj Patil

    ------------------------------
    Dhiraj Patil
    ------------------------------



  • 3.  RE: Concurrency Issues - DATABASE B2Bi

    Posted Sun October 04, 2020 02:57 PM
    Hello,
    the query that my BP execute is similar this:

    select mbx.PATH,msg.MESSAGE_ID, msg.MESSAGE_NAME from MBX_MAILBOX mbx
    inner join mbx_message msg on mbx.MAILBOX_ID = msg. MAILBOX_ID
    where mbx.PATH LIKE '%/MAIN/00000052974/78909306/%'
    and msg.MESSAGE_NAME not like'%.xml%'order by msg.CREATED_DATETIME


    Multiple persons send request to B2Bi execute this query, I cannot executing one query at a time, this process is online, I think that B2Bi has very problem when process is online, I think that is necesary create a separete database to process this online request.

    ------------------------------
    Douglas Rezende
    ------------------------------



  • 4.  RE: Concurrency Issues - DATABASE B2Bi

    Posted Mon October 05, 2020 06:30 AM
    Edited by System Admin Wed March 22, 2023 11:44 AM
    Hi Douglas,

    What is the observation when you execute the above mbx query directly on an sql client (Ex: sqldeveloper)? Is it slow or fast? What is the time difference between BP and direct sql execution?

    Regarding your point on database concurrency, I believe that is a natural phenomenon in the multi threaded application like B2BI because there are usually multiple connections to the database server and B2BI runs different SQL statements in each connection. Generally, databases have controls to deal with conflicts/consistency/integrity etc.

    Kishore

    ------------------------------
    KALYAN PAVAN KISHORE CHAKRAVARTHULA
    ------------------------------



  • 5.  RE: Concurrency Issues - DATABASE B2Bi

    Posted Mon October 05, 2020 06:43 AM
    Hello,

    do you have some user using the screen "communication session" ?

    It could be the query used to search transfert / session (recent or current).

    the query is not optimized (4 union, left outer join on WFC).
    And the JDBC datapool are shared between the workflow and the UI.

    You should limit the occurency and the time's window of the queries.

    Best regard.

    ------------------------------
    Vincent Lahousse Senior Consultant
    Consultant Senior
    Satisco
    niort
    0680265354
    ------------------------------



  • 6.  RE: Concurrency Issues - DATABASE B2Bi

    Posted Mon October 05, 2020 08:01 AM
    hello Douglas, 

    Your issue seems to be related to the database not performing as quickly as expected.
    The database is not able to quickly respond to your BP's jdbc call because of this request limiting the capacity to respond of the database.

    Your request (the big one) seems to query actual (XFER.END_TIME IS NULL) or recent session / transfert (XFER.START_TIME  > :2/3/4).
    This query should be used by an interface to look at current transfert (perhaps screen "communication sessions"?).
    This request is not optimised (4 union, left outer join on table WORKFLOW_CONTEXT).
    you should perhaps demand tp the users to limit the time's windows of the search on this screen to limit the size of data processed by the request.
    the dashboard's screen use the same jdbc's datapool than the workflow.

    You should also look at the size of your database (to limit the size of the table, I have in mind WFC) and the number of connexion (ACT_SESSION) generated by day (possible excess of connexion from some partners). To understand the explain plan of the query for your database.

    ------------------------------
    Vincent Lahousse Senior Consultant
    Consultant Senior
    Satisco
    niort
    0680265354
    ------------------------------