Example using webMethods Broker

Hi all,
Is there anybody can provide me an example how to develop the webMethods broker solution together with IS. I’m currently running IS and Broker at the same machine and would like to develop a prototype solution for my Supervisor.

I have study the webMethods Broker Administrator.pdf and Publish subscribe Developer Guide.pdf, there not much thing that I can learn from. Most of the content show me how to use the broker and explain the broker feature. What I really need is an example to guide me how to start.

Please help.

Regards
Cliff Seow

  1. Check If IS and Broker are running.
    2.Create document and set Publishable property to True
  2. Create two flows: Flows1 and Flows2
  3. In Flows1 put pub.publish:publish with parameters documentTypeName is
    your document FULL name(best is cut and paste) and document is this document.
  4. Create trigger with flow2 and your document.
  5. In menu synchronize your documents.
  6. That’s all

If you run flow1, document will be publish and than subscribe to trigger and run flow2

Cliff,

I would approach the prototype with a list of goals that you are trying to achieve.

I have a loose analogy that I use to describe the Broker/IS relationship. The Broker is like a mailman and each subscriber (trigger) is like a mailstop. Once you publish (hand the mail to the mailman) to the broker, the broker makes certain that the message gets to point B. Also, there’s a great guide on Advantage titled “Technical Note: Optimizing Publish/Subscribe Solutions.”

There are many reasons to use the broker. Older Architecture called for Broker/Broker Client Solutions. I am working on a project now where broker clients dial into the VPN to get messages and then disconnects. In this case, you really can’t “publish” the document. It is more efficient to “deliver” the document using pub.publish:deliver. You specify the client id and when the client connects to the broker, it will utilize the getEvent() method to get each message from the broker.

There are other ways to move messages around. With IS, you will probably use the Publish/Subscribe method. As in Maros’s post, you will need to create a publishable document. Then you will publish the document using pub.publish:publish. I like to use the fully qualified namespace (ns) for the document in my flow services, mainly to remind me that it is a publishable document and that I plan to publish this document somewhere in my flows. I always create a map step above my call to pub.publish:publish in the flow service to map the data into my document. The trigger will identify the published document and specify a receiving flow service. The input to the receiving flow service MUST have the published document as an input, AND the name of the document must be the fully qualified namespace name. For example, if you had a purchaseOrder document in your Default package and the interface for the document is Default, then the NS name would be Default:purchaseOrder and this is what the input would be for the receving flow service.

A simple test for the prototype is to have a document with one element named “message”. Make the document publishable. Create the second flow as described above. Invoke pub.flow:debugMessage in the second flow. Map the message element from the published document to the message input of debugMessage. This will write the message to the server log where you can see it.

HTH

Ray

Hi Ray & Maros,
I have created the package, but it seem not working in my IS and Broker. I have uploaded the package. Please help me to investigate.

Thanks

Publish Subscribe Package
Default.zip (14.3 k)

Cliff,

I think the issue was that your “subscribe” service did not use the fully qualified docType name (test.publishSubscribe:message) in the input section of its Input/Output tab.

The attached package works. I only changed the name of the input and tweaked your pub.flow:debugLog message a bit. You can also add a pub.flow:tracePipeline statement to your subscribe service to see the other data (such as the envelope data) that gets passed to your service from the trigger.

Mark

PubSubExample IS package
PubSubExample.zip (8.8 k)

Thanks Mark Carlson,
It’s worked.

Well, I have create another example for Publish & Wait. It’s work also using the tips that you provided.

Please have a look is it correct.

Many thanks to you.

Regards
Cliff Seow

PublishSubscribeExample
\172.16.57.18\webMethods6\IntegrationServer\replicate\outbound\Default_PB2.zip (16.6 k)

I hope you are not getting reply(receivedDocument=null) that is because the waitTime u gave is just 10 millisecs.

Dear All,
how to import these examples in to my integration server???

To install an Integration Server package:

  1. Copy the Zip file containing the exported package to your IS_Home\replicate\inbound folder []Open the IS Administrator tool in your web browser by going to http:\\hostname:5555 []Click on the Packages->Mangement link []Click on Install Inbound Releases []Select the Zip file containing your package from the drop down list []Click on the “Install Release” link []Open Developer or click the refresh session button in Developer to see the newly loaded package

These steps are covered in the Integration Server Administration Guide

Mark

can u please look at the problem of mine regarding the broker… I exactly created what u people did .Also i did executed the examples what u peopel gave in the above messages. The error coming over these is

The exact error for the above example in the 5th posting above

Could not run ‘message’.

com.wm.app.b2b.server.ServiceException: [ISS.0098.9014] BrokerException: No Permission (109-1374): Cannot publish the document. Permission is denied. Check the ‘can publish’ permissions in the client’s client group.

Even for my examples, the message is same. Please help.Also detailed explanation is at
http://www.wmusers.com/wmusers/messages/120/36552.shtml?1090653605

once it published to the broker and the next time onwards , the above error is being shown.

Ur help is more precious.
thanks and regards
ram

Hi All,

I am using webmethods to get data from SAP. I am able to publish a Sales order created by SAP into a database by using webmethods. now i want to publish it to JMS Queue. can anyone give me a clue to do this.

I would appreciate if anyone can help me in this regard.

Thanks
Kris

Kris,

First, welcome to WM Users! We hope you’ll register and post here often.

I think the easiest (least coding) approach would be to install the JMS Adapter and use one the MessageProducer adapter service templates such as DocumentToTextMessage, DocumentToObjectMessage or DocumentToMapMessage to publish a message on a JMS Queue.

This adapter supports most major JMS providers, but you should check the webMethods JMS Adapter Installation Guide available in the bookshelf section of Advantage to confirm that your JMS provider is one of them.

Another approach would be to build one or more java services that would use the JMS API to connect to a JMS provider and publish your message. This is significantly more complex if you have not worked with the JMS API before. It is probably the best option if your company is using a JMS provider not yet supported by the webMethods JMS adapter.

Hope this helps,

Mark

In our code we are using PublishAndWait service while executing it is hanging at this service.

Can you check if you have configured the Broker. to do that goto IS setting annd edit the broker settings.

Assume you must have done this before publishing.

Mike

Mark,
I tried to install your example to my webMthods (7.1.2) by using the steps you mentioned, but I got the “Invalid Package Name” error when I tried to install the relase in this zip file. Do you have any idea why I got that problem?
Thanks,

Hi,

You have to extract that package and save the content means all folders in one user defined package under IS_home/replicate/inbound.
then go to IS admin ->packages->management->Install Inbound releases.
then it will show the list of packages which you are willing to install .Select the one which you want and it will get installed.

-SB