Topic
22 replies Latest Post - ‏2013-04-04T19:57:32Z by SystemAdmin
SystemAdmin
SystemAdmin
7615 Posts
ACCEPTED ANSWER

Pinned topic IID do I need a separate module to allow "Invoke" activity

‏2013-04-02T00:00:33Z |
IID 8.0 BPEL

I have existing basic services in WMB with MQ Synchronous request-reply interfaces for SOAP over MQ with WSDL / XSD.

Do I need a separate module assembly with BO for the Interface and request-reply synchronous operation?

If so it looks like I need an Export of the Interface for that BO wired to an MQ Outbound Import and a MQ Inbound Export for the MQ that is monitored by the WMB Basic Service with the Queue Manager and Queue names all the same for the MQ Import and Export. See attached screen shot.

Is there a better way to Invoke a WMB Basic Service via MQ?

Ollie
Updated on 2013-04-04T19:57:32Z at 2013-04-04T19:57:32Z by SystemAdmin
  • kolban
    kolban
    2929 Posts
    ACCEPTED ANSWER

    Re: IID do I need a separate module to allow "Invoke" activity

    ‏2013-04-02T00:13:03Z  in response to SystemAdmin
    Hi Ollie, I don't think I am following the question. Would it be possible to rephrase? What is a "WMB Basic Service"?

    Neil
    • SystemAdmin
      SystemAdmin
      7615 Posts
      ACCEPTED ANSWER

      Re: IID do I need a separate module to allow "Invoke" activity

      ‏2013-04-02T00:32:21Z  in response to kolban
      Neil,

      WMB refers to WebShere MessageBroker. Each of our legacy application interfaces have a MQ In queue and MQ out queue with the SOAP over MQ that defines the message payload for each "Basic Service". Some of these basic services are TCP/IP legacy applications/servers and others are Java APIs and some are commercial products we access in multiple ways. WMB was the choice for the integration with each of those for obvious reasons.

      In BPM IID I have an Integration Solution, with the main module and BPEL with a module for each of these Basic Services and a Library for all the BOs and Interfaces.

      The WMB Basic Services are shared between several applications.
      • kolban
        kolban
        2929 Posts
        ACCEPTED ANSWER

        Re: IID do I need a separate module to allow "Invoke" activity

        ‏2013-04-02T02:31:51Z  in response to SystemAdmin
        He he he ... how times change ... I was an MQ/MB specialist for years and achieved the formal rank of "Master". Apparently that was officially a decade ago. What confused me was term "Basic Service" ... I wondered if that had a special meaning in our context.

        So I understand that you have a MB ESB which wishes to receive SOAP formatted payload messages over an MQ transport. MB will then do it's magic and send a response.

        What I am still not getting is the "core" question. I can imagine an SCA module with an MQ bound SCA Import that, when invoked, will send a message to MQ and then await for a response. Pretty much business as usual. What I am not getting (and it is most likely my own blindness for not seeing it) is what the core question/choices are?

        Neil
        • SystemAdmin
          SystemAdmin
          7615 Posts
          ACCEPTED ANSWER

          Re: IID do I need a separate module to allow "Invoke" activity

          ‏2013-04-02T03:50:38Z  in response to kolban
          > {quote:title=kolban wrote:}{quote}
          >...
          > What I am still not getting is the "core" question. I can imagine an SCA module with an MQ bound SCA Import that, when invoked, will send a message to MQ and then await for a response. Pretty much business as usual. What I am not getting (and it is most likely my own blindness for not seeing it) is what the core question/choices are?
          >
          > Neil

          Right sorry for not being a little more clear and descript. The overall model for the application is a BPM orchestration layer to handle external HTTP/SOAP requests that come into an MQ that initiates the BPEL process. Along that process we have a few requests for data from external sources and update data to external sumps. The legacy data comes from or goes to WMB applications that wrap legacy api or tcp/ip servers to provide a uniform interface via MQ.

          If you look at the attached screen shot, I THINK??? what you describe is what I am doing. The Invoke activities have matching MQ Imports and Exports to interact with the WMB Broker applications. I just want to be sure I am doing it the best way, I too am a long time WMB developer having build banking applications with it 6-7 years ago. BPM is new to me and my team.

          Ollie
  • SystemAdmin
    SystemAdmin
    7615 Posts
    ACCEPTED ANSWER

    Re: IID do I need a separate module to allow "Invoke" activity

    ‏2013-04-02T05:19:13Z  in response to SystemAdmin
    Neil,

    Your videos on BPM have been VERY helpful....sure would like to see one initiated by an MQ incoming message, then Invoke an SCA Module that itself writes to an MQ and waits for an MQ response....yup sure would like to see one like that....;-)
    • SystemAdmin
      SystemAdmin
      7615 Posts
      ACCEPTED ANSWER

      Re: IID do I need a separate module to allow "Invoke" activity

      ‏2013-04-02T05:20:52Z  in response to SystemAdmin
      that is a video using BPEL and MQ...sorry didn't review before posting.
      • kolban
        kolban
        2929 Posts
        ACCEPTED ANSWER

        Re: IID do I need a separate module to allow "Invoke" activity

        ‏2013-04-02T22:32:34Z  in response to SystemAdmin
        Assuming that you want to invoke a BPEL process as the result of a message being sent by MB, then you would create an SCA Export component with MQ bindings. This would then be wired to the BPEL process. When deployed, the SCA Export says "Start listening on the MQ queue". When a message arrives, an instance of the SCA module is automatically created, the content of the message parsed and an instance of the BPEL process created. The BPEL process will then "go do its thing". At the end of the BPEL process if you have a "Reply" activity, the reply data is send BACK to the SCA Export which will serialize the data and send it back to MB as a response.

        An SCA Export listens for an incoming message and sends a response back.

        An SCA Import sends a message and then waits for a response back.

        Neil
        • SystemAdmin
          SystemAdmin
          7615 Posts
          ACCEPTED ANSWER

          Re: IID do I need a separate module to allow "Invoke" activity

          ‏2013-04-02T22:56:14Z  in response to kolban
          ok in my project I create a module "acceptrequest".

          in that module I add a BO for the data in and out.
          in that module I add an interface with request-reply with the bo i created
          in the assembly diagram I add an MQ Inbound Export that is bound to the MQ Qmanager and queue for the external service.
          in the assembly diagram I add an MQ Outbound Import that is bound to the MQ QManager and queue for the external service.
          in the BPEL receive I set that to the partner for the module acceptrequest.

          Right?
          • kolban
            kolban
            2929 Posts
            ACCEPTED ANSWER

            Re: IID do I need a separate module to allow "Invoke" activity

            ‏2013-04-03T00:27:33Z  in response to SystemAdmin
            When the message arrives from MQ, the message will be in a "raw" format. Maybe XML, maybe COBOL, maybe something else. You then create a Business Object definition (BO) which describes the logical content of the message. You then create an interface which has an operation and input/output parameters. The input data type will be BO representing your incoming message. You may use the same BO if the output is of the same type or you may create as many BO types as needed.

            Next you create an SCA Export component and attach the interface to the Export.

            Now you can bind the SCA Export to the source of the data which in this case will be MQ. You will also describe how the physical data in the message will be parsed to construct the BO.

            To the right of the SCA Export, you can now wire in a BPEL Process.

            The BPEL process will start at the "Receive" activity with the BO that was parsed from the incoming message. The BPEL process will now do its thing.

            Assuming it is straight-through with no other calls, the BPEL will end with a Reply activity. This is the data that will be sent "back to the left" on the SCA assembly ... back to the original SCA Export which will be waiting on the reply.

            In your description, you have not yet mentioned (or I have not yet understood) the overall data flow. I am assuming that the request message arriving on the MQ queue is a request/response message and you will be sending a response message back. If this is not the case, sketch out a quick diagram showing how the data flows through the overall system including the BPM parts.

            Neil
            • SystemAdmin
              SystemAdmin
              7615 Posts
              ACCEPTED ANSWER

              Re: IID do I need a separate module to allow "Invoke" activity

              ‏2013-04-03T00:58:29Z  in response to kolban
              Neil,

              Thanks here are the screen shots of the main BPEL flow with the AcceptRequest Module and HttpValidate Module assembly diagrams There is a BO and Interface matching and a request response operation on the AcceptRequest. I am thinking the AcceptRequest module also needs to write back to the requesting Queue for the Reply to talk back.

              See attached.
              • kolban
                kolban
                2929 Posts
                ACCEPTED ANSWER

                Re: IID do I need a separate module to allow "Invoke" activity

                ‏2013-04-03T04:31:47Z  in response to SystemAdmin
                Hi Ollie,
                The diagram you posted was exactly what I was looking for. However, it is giving me pause. Let us see if we can't put my finger on what is troubling me.

                First, I notice we don't name the process, for the sake of a name I'll call it "OllieBPEL".

                The way I understand what your intent is ... is that the MQRequest SCA Export is watching an MQ Queue ... when a message arrives at that export, it immediately calls an import called "Import1". Not sure yet why you are doing that.

                You didn't say which module "OllieBPEL" lives in. I'll assume you have a module called "OllieModule" that has a corresponding SCA Export that is invoked when "Import1" in "AcceptRequest Module" is called. This will cause "OllieBPEL" to start at the Receive activity.

                Next I see that the you have an activity called "HttpValidate". Here is where I start to lose you ... can you explain in more depth the intent of HttpValidate? The bottom line is that what you have drawn doesn't appear (to me) to have any semantic value or be able to work. When you execute a BPEL Invoke activity, it is wired to a single SCA component which must be the one that responds to the Invoke (unless the invoke is one-way). I am not understanding the intent.

                Also, there is an arrow missing in your story. What do you think happens when the final BPEL "Reply" activity is reached?

                Neil
                • SystemAdmin
                  SystemAdmin
                  7615 Posts
                  ACCEPTED ANSWER

                  Re: IID do I need a separate module to allow "Invoke" activity

                  ‏2013-04-03T05:08:56Z  in response to kolban
                  > {quote:title=kolban wrote:}{quote}
                  > Hi Ollie,
                  > The diagram you posted was exactly what I was looking for. However, it is giving me pause. Let us see if we can't put my finger on what is troubling me.
                  >
                  > First, I notice we don't name the process, for the sake of a name I'll call it "OllieBPEL".
                  Ok, fair enough, of course the BPEL process itself has a name, I didn't think that was important, but for reference it is RTSHttpBPEL witch is for the HTTP SOAP entry point of an application, there is another entry point but that also calls RTSMain SCA Component with its own BPEL and Invokes to other MQ interfaces to WMB basic services.

                  >
                  > The way I understand what your intent is ... is that the MQRequest SCA Export is watching an MQ Queue ... when a message arrives at that export, it immediately calls an import called "Import1". Not sure yet why you are doing that.
                  >
                  > You didn't say which module "OllieBPEL" lives in. I'll assume you have a module called "OllieModule" that has a corresponding SCA Export that is invoked when "Import1" in "AcceptRequest Module" is called. This will cause "OllieBPEL" to start at the Receive activity.
                  It lives in a RTSHttpBPELModule, it and the other related modules and Library all reside in a RTSHttpBPELSolution.
                  >
                  > Next I see that the you have an activity called "HttpValidate". Here is where I start to lose you ... can you explain in more depth the intent of HttpValidate? The bottom line is that what you have drawn doesn't appear (to me) to have any semantic value or be able to work.
                  Ah Ha, that's why I am asking for an example....a picture or video is worth a thousand trial and errors. I took the work descriptions and tried to build it, obviously not correctly, but I could not and still not been able to find an example that 'DOES WORK'

                  ValidateClient is one of those WMB basic services used by several applications it has an MQ interface with an Inbound Queue and an Outbound Queue. WMB handles the correlation ID (I think) I want my Invoke component named HttpValidate to write to the MQ that is inbound to the WMB application and wait for the response from the WMB application, ta da, that's what I have been asking for an example of how to do that. I got no reply with an example when I asked for that so I rephrased for this question.

                  >When you execute a BPEL Invoke activity, it is wired to a single SCA component which must be the one that responds to the Invoke (unless the invoke is one-way). I am not understanding the intent.
                  I got that, I understand the concept, I don't have an example of a working Invoke to an MQ service to learn from. I don't know how else to ask for an example. Your book helps and I know from that it can work. Part of it is simply newness, I see SCA Module but I don't see in IID anyplace the term "SCA Module" all I see is Module and Mediation Module. I assume that an SCA Module is a module that implements an SCA Binding and that not all Modules do. The question is do I need a separate module to Invoke my MQ interface? if the answer is no, then how do I configure the Invoke to write to MQ and wait for MQ reply? If the answer is yes, then what does that module look like? Does it have just two MQ components an Inbound Export and an Outbound Import? (those names suck BTW they sound Oxymoronic).
                  >
                  > Also, there is an arrow missing in your story. What do you think happens when the final BPEL "Reply" activity is reached?
                  Yes, I saw that too and added accordingly, but likely since I don't yet know
                  >
                  > Neil
                  • SystemAdmin
                    SystemAdmin
                    7615 Posts
                    ACCEPTED ANSWER

                    Re: IID do I need a separate module to allow "Invoke" activity

                    ‏2013-04-03T05:22:00Z  in response to SystemAdmin
                    I have revised the RTSHttpBPELModule Assembly diagram for the incoming MQ that is bound to the Receive entry of the BPEL. Guessing from what Neil said is what it should look like, it still uses the same BO and Partner Interface see attached diagram of the Assembly diagram.
                  • SystemAdmin
                    SystemAdmin
                    7615 Posts
                    ACCEPTED ANSWER

                    Re: IID do I need a separate module to allow "Invoke" activity

                    ‏2013-04-03T05:23:38Z  in response to SystemAdmin
                    sorry forgot the attachment.
                    • kolban
                      kolban
                      2929 Posts
                      ACCEPTED ANSWER

                      Re: IID do I need a separate module to allow "Invoke" activity

                      ‏2013-04-03T14:46:14Z  in response to SystemAdmin
                      Hi Ollie,
                      I think we need to back away from actual project words and look at high level concepts. See the attached diagram for the rest of the discussion.

                      A message is placed on a queue which causes an MQ bound SCA Export to start an SCA module (1). Flow then passes to the BPEL process (2) which causes an instance of that process to start (3). The process then continues executing until we reach a BPEL Invoke activity (4). The intent here is to call another back-end service. The BPEL process is wired to an SCA Import component and that is invoked (5). The SCA Import drops a message on a queue and waits for a response. Eventually the response returns (6). The BPEL process which was waiting for the response from the Invoke wakes up (7). Control in the BPEL process now carries on until the process ends with a Reply (8). The flow continues to unwind and we arrive back at the original SCA Export (10) where the response message is passed back to the original requester.

                      Neil
                      • SystemAdmin
                        SystemAdmin
                        7615 Posts
                        ACCEPTED ANSWER

                        Re: IID do I need a separate module to allow "Invoke" activity

                        ‏2013-04-03T23:22:55Z  in response to kolban
                        Neil,

                        Thanks and now we are getting someplace, an example.

                        I do have some questions below to clarify. In your diagram and to the point of the question that is the subject of this thread..."do I need a separate module to allow the "Invoke" activity?" You don't say if the assembly diagram you display is in the same module as the BPEL Process or a separate module or does it matter?

                        In your assembly diagram you show a wire from MyBPEL to CallToOtherService. If I need to assign values to a BO that is the interface to that OtherService, I don't understand where I put that Assign activity? It seems to me that the assembly diagram would only have the OriginalRequest MQ SCA Export and the MyBPEL SCA module,1 & 2 and not 5. The call to the other service and the Assign (between 3 and 4), Choice(after 4 as in my diagram) and other activities in the BPEL 3, 4 & 7 would execute and response reply 8 to 10.

                        An example of the module assembly diagram for the MQ "OtherService" I assume is a single MQ Inbound Export with its own BO and Interface and Reference Partner given the one in your diagram doesn't have an MQ Outbound Import.
                        > {quote:title=kolban wrote:}{quote}
                        > Hi Ollie,
                        > I think we need to back away from actual project words and look at high level concepts. See the attached diagram for the rest of the discussion.
                        >
                        > A message is placed on a queue which causes an MQ bound SCA Export to start an SCA module (1). Flow then passes to the BPEL process (2) which causes an instance of that process to start (3). The process then continues executing until we reach a BPEL Invoke activity (4). The intent here is to call another back-end service. The BPEL process is wired to an SCA Import component and that is invoked (5). The SCA Import drops a message on a queue and waits for a response. Eventually the response returns (6). The BPEL process which was waiting for the response from the Invoke wakes up (7). Control in the BPEL process now carries on until the process ends with a Reply (8). The flow continues to unwind and we arrive back at the original SCA Export (10) where the response message is passed back to the original requester.
                        >
                        > Neil
                        • kolban
                          kolban
                          2929 Posts
                          ACCEPTED ANSWER

                          Re: IID do I need a separate module to allow "Invoke" activity

                          ‏2013-04-03T23:41:40Z  in response to SystemAdmin
                          Everything in the Assembly Diagram is one module. A module has a 1-1 correspondence with an assembly diagram. The BPEL process in my diagram was the content of the "MyBPEL" process.

                          In the Invoke Activity in the process called "Call Other Service" one names process variables that are passed and received as parameters from the BPEL Invoke Activity. Prior to reaching the Invoke Activity, you are expected to populate those correctly. That can be achieved using the BPEL Assign activity prior to reaching the Invoke.

                          I understood that your BPEL process wanted to be "started" as the result of a message arriving on a queue and then invoke another service as a result ... hence "CallToOtherService"

                          I made no comment on what the implementation of the service that is called by "CallToOtherService" may be. It could be another SCA Module or it could simply be another MQ listening application such as MB.

                          Neil
                          • SystemAdmin
                            SystemAdmin
                            7615 Posts
                            ACCEPTED ANSWER

                            Re: IID do I need a separate module to allow "Invoke" activity

                            ‏2013-04-04T00:16:01Z  in response to kolban
                            > {quote:title=kolban wrote:}{quote}
                            > Everything in the Assembly Diagram is one module. A module has a 1-1 correspondence with an assembly diagram. The BPEL process in my diagram was the content of the "MyBPEL" process.
                            >
                            > In the Invoke Activity in the process called "Call Other Service" one names process variables that are passed and received as parameters from the BPEL Invoke Activity. Prior to reaching the Invoke Activity, you are expected to populate those correctly. That can be achieved using the BPEL Assign activity prior to reaching the Invoke.
                            >
                            > I understood that your BPEL process wanted to be "started" as the result of a message arriving on a queue and then invoke another service as a result ... hence "CallToOtherService"
                            >
                            > I made no comment on what the implementation of the service that is called by "CallToOtherService" may be. It could be another SCA Module or it could simply be another MQ listening application such as MB.
                            >
                            > Neil

                            Yes I know the BO passed to the "OtherService" needs to be populated. My question is that it appears in your assembly diagram that you have a wire from the MyBPEL process to The "OtherService" Q AND the OtherService in the BPEL. Is that right? That tells me control passes from MQ when a message arrives, starts BPEL and when BPEL finished it goes to the OtherService in your assembly diagram. And since the OtherService is also an Invoke in the BPEL it seems to me it gets executed twice.

                            So I revised my Solution based on your diagram with my change due to the above apparent congruence and attached.

                            Since you didn't comment on the other service, the HttpValidateClient in my diagram. It is an WMB shared service that we want to Invoke, with some data from the request and get a response code back by writing to an MQ and waiting for a response.

                            I have setup its BO, Interface and Reference Partner and configured the Invoke and no Red X. I hope I guessed right.

                            Thanks for your time and it is helping me so it will help others.
                            • kolban
                              kolban
                              2929 Posts
                              ACCEPTED ANSWER

                              Re: IID do I need a separate module to allow "Invoke" activity

                              ‏2013-04-04T03:24:28Z  in response to SystemAdmin
                              Look again carefully at the number in my diagram. That numbering is the control flow.

                              At #2 the BPEL process is reached
                              At #3 the BPEL process is started
                              At #4 the BPEL activity of type Invoke is reached. This causes the BPEL process to block and make a call to its "BPEL Partner Interface". This partner interface is wired to the SCA Import.
                              At #5 control passed from the now blocked BPEL process to the SCA Import. The SCA Import now blocks waiting for a response
                              At #6 a response has been received. Control now flows back down the wires
                              At #7 the BPEL process is woken up because its blocking Invoke activity has been resolved and it now carries on

                              IBM BPM Advanced and IBM Integration Designer can't be easily learned without education. Have you had the opportunity to attend an education class on these products or had mentoring from an IBM services specialist? BPEL itself is a rich and powerful industry speced language. The IBM documentation doesn't do much to teach BPEL concepts any more than a Java IDE tries to teach Java. IID assumes the user is already skilled in the BPEL language and provides an implementation of it.

                              The IBM BPM Advanced capabilities that we are looking at have been around at IBM since 2005. However, they used to have a different name. They used to be called "IBM WebSphere Process Server" (runtime) and IBM WebSphere Integration Developer (tooling). If you google at IBM's developer works web site on these terms you will find a ton of existing articles on using these products. In addition, the IBM Red Books websites also contain free information.

                              The following google search also helped me:

                              http://www.amazon.com/s/ref=nb_sb_noss_1?url=search-alias%3Daps&field-keywords=websphere+process+server

                              Neil
                              • SystemAdmin
                                SystemAdmin
                                7615 Posts
                                ACCEPTED ANSWER

                                Re: IID do I need a separate module to allow "Invoke" activity

                                ‏2013-04-04T06:03:49Z  in response to kolban
                                No, I have not been able to attend a formal training session but will at first opportunity.
                                No, the IBM staff is not well schooled on anything but WMB and to them all problems look like WMB solutions.

                                Ok, regarding your diagram compared to mine.

                                you have a wire from 2-5. what about other Invokes later in the BPEL process, do I need to have them in the main assembly diagram all wired from MyBPEL to each of the MQ? I assume so if what you say below is correct and I don't doubt it. I must also then assume that the SCA binding that lists the queue manager, and in and out queues is how BPEL matches requests to responses as MQ uses two queues for synchronous invocation.

                                So in my diagram, my "OtherServices" will all just be the MQ Outbound Import and nothing else. And that makes the answer to the question of this thread...

                                "No, one assembly diagram with all SCA components and services wired together and one BPEL process to control the flow." right?
                                • kolban
                                  kolban
                                  2929 Posts
                                  ACCEPTED ANSWER

                                  Re: IID do I need a separate module to allow "Invoke" activity

                                  ‏2013-04-04T13:52:38Z  in response to SystemAdmin
                                  You got it. You can have as many SCA Import components to the right of your BPEL process as you like. Each one will correspond to a different target end-point. You can have as many BPEL Invoke activities in your BPEL process as you like. Each one will be associated with a partner link. A single partner link is associated with a single terminal on the right of the BPEL process at the assembly diagram level. Two BPEL invokes in a process can both use the same partner link or each use a different partner link.

                                  Neil
                                  • SystemAdmin
                                    SystemAdmin
                                    7615 Posts
                                    ACCEPTED ANSWER

                                    Re: IID do I need a separate module to allow "Invoke" activity

                                    ‏2013-04-04T19:57:32Z  in response to kolban
                                    Neil,

                                    Thanks so much, the Assembly diagram is more of a use case diagram, while the BPEL is the flow control.

                                    BTW a Video will help those visually oriented learners like me. I have used the same analogy that learning to develop on IID With either BPMN or BPEL from the Info Center is like trying to learn programming from the JavaDoc.

                                    Ollie