tag:blogger.com,1999:blog-38905239934793729162024-03-19T08:21:03.227+05:30SOA Tech FlicksVinodKhttp://www.blogger.com/profile/02960208450297288533noreply@blogger.comBlogger19125tag:blogger.com,1999:blog-3890523993479372916.post-26103192136751910442018-06-26T21:42:00.002+05:302018-07-01T08:41:27.933+05:30Publishing a package to Ballerina Central in simple steps <div dir="ltr" style="text-align: left;" trbidi="on">
<a href="https://ballerina.io/">Ballerina</a> is a programming language for integrations. Visit <a href="https://ballerina.io/">https://ballerina.io/</a> for more info. Ballerina allows developers to publish their own packages to <a href="https://central.ballerina.io/">Ballerina Central</a>, so that others can discover and reuse. The beauty of open source!!<br />
<br />
Here is how to get your own package into the central in simple steps.<br />
<br />
<br />
<ol style="text-align: left;">
<li>Go to the <a href="https://central.ballerina.io/">Ballerina Central</a> and signup. You need the token that is given after registering in order to push packages.</li>
<li>Create a new folder(project home) in your machine and run <b>ballerina init </b>command inside the folder. I assume you already have the ballerina installed. This will create your basic project structure.</li>
<li>Create a folder with the package name you want and write your ballerina code in that.</li>
<li>Create a file called Ballerina.toml in the project home directory. It's content should be something like below,<br />
<script src="https://gist.github.com/vinok88/84bf6fb255c1660b714233e59f30be3b.js"></script></li>
<li>Then add a Package.md file with content describing your package to be displayed in the central dashboard.</li>
<li>Now run the command, <b>ballerina build package_name </b>to build your package.</li>
<li>Then run the command, <b>ballerina install package_name </b>to import the package to your local ballerina repo.</li>
<li>Finally run the command, <b>ballerina push package_name </b>to push your package to central. For the first time it will only update the token you generated, you will have to rerun the command.</li>
</ol>
<div>
Holla, you are done with publishing your package. Go on and check it out in the <a href="https://central.ballerina.io/">https://central.ballerina.io/</a>.<br />
<br />
Source - <a href="https://ballerina.io/learn/how-to-extend-ballerina/index.html">https://ballerina.io/learn/how-to-extend-ballerina/index.html</a></div>
</div>
VinodKhttp://www.blogger.com/profile/02960208450297288533noreply@blogger.com0tag:blogger.com,1999:blog-3890523993479372916.post-52520039853118514452018-01-08T15:15:00.004+05:302018-10-06T08:00:20.203+05:30Debuging Ballerina runtime<div dir="ltr" style="text-align: left;" trbidi="on">
If you are a contributor to <a href="https://ballerinalang.org/">BallerinaLang</a> or interested to see how it works, it's very easy by debugging the code.<br />
<br />
But, default --debug option in Ballerina is now serving as a Debug option with Ballerina composer. In order to debug the actual Ballerina language implementation, you need to use the <span style="color: #263238; font-family: Roboto, sans-serif; font-size: 13px; font-variant-ligatures: normal; orphans: 2; widows: 2;"><b>BAL_JAVA_DEBUG</b> </span>command to remote debug the code. This will enable Java remote debug on given port. Refer the following example,<br />
<br />
<div style="text-align: center;">
<span style="background-color: #cccccc;"><span style="font-family: Georgia, Times New Roman, serif;"><span style="background-color: transparent; color: #263238; font-size: 13px; orphans: 2; text-align: left; widows: 2;"><span style="font-family: Georgia, Times New Roman, serif;"><b>BAL_JAVA_DEBUG=5005</b></span></span><span style="background-color: transparent; color: #263238; font-family: Roboto, sans-serif; font-size: 13px; orphans: 2; text-align: left; widows: 2;"> </span><span style="font-family: georgia, times new roman, serif;">ballerina run balTest.bal</span></span></span></div>
<br />
Thanks.<br />
<br />
<br /></div>
VinodKhttp://www.blogger.com/profile/02960208450297288533noreply@blogger.com0tag:blogger.com,1999:blog-3890523993479372916.post-70639270135462013002017-09-14T13:45:00.000+05:302017-09-14T13:45:57.448+05:30GIT: Merge several commits to one (Rewrite History)<div dir="ltr" style="text-align: left;" trbidi="on">
There can be situations where you want to merge several commits into one commit and remove the old commits. So that they will look like only one commit.<br />
Here is how,<br />
<br />
<ol style="text-align: left;">
<li>Issue following command by replacing n with the number of commits you need to merge together. <span style="background-color: #cccccc; font-family: "trebuchet ms" , sans-serif;">git rebase -i HEAD~n</span></li>
<li>You will get a prompt like below. Replace the word "pick" with "squash" on all commits other than the latest one.<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSJ0VRFoQqNi0LDITKu4fYc-Na60E_TyjBdeGArExjxsDSyQC0n_xviZes1HAwyDzFrfgKiBnxo8ytCZ1RKxq7fAb8xf11FLR-kveMob2EGZ7AdYYzTpiEm2oMIiylO9bmgWV-E7srhtU/s1600/Screen+Shot+2017-09-14+at+1.24.20+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="344" data-original-width="1062" height="103" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSJ0VRFoQqNi0LDITKu4fYc-Na60E_TyjBdeGArExjxsDSyQC0n_xviZes1HAwyDzFrfgKiBnxo8ytCZ1RKxq7fAb8xf11FLR-kveMob2EGZ7AdYYzTpiEm2oMIiylO9bmgWV-E7srhtU/s320/Screen+Shot+2017-09-14+at+1.24.20+PM.png" width="320" /></a></div>
</li>
<li>Then you will get an editor to add the commit message for the new commit.</li>
<li>Once this is done there will be a new commit that is not pushed to the remote repo.</li>
<li>Force push the commit to the remote with following command. <span style="background-color: #cccccc;"><span style="font-family: "trebuchet ms" , sans-serif;">git push -f remote-repo branch</span></span> </li>
</ol>
Check the git log, you will have only one commit for all those commits.</div>
VinodKhttp://www.blogger.com/profile/02960208450297288533noreply@blogger.com0tag:blogger.com,1999:blog-3890523993479372916.post-48995672246837841712017-09-02T00:55:00.000+05:302017-09-02T01:05:25.722+05:30Ballerina : Sending a simple message<div dir="ltr" style="text-align: left;" trbidi="on"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">This is a step by step guide on sending a simple message using ballerina. If you have no idea on Ballerina, go to the <a href="https://ballerinalang.org/">ballerinalang.org</a>. You need to setup the ballerina composer as well to follow the guide.</span><br />
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br />
</span></div><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: white; color: #333333; font-family: "arial"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Let’s try a simple scenario where a patient makes an inquiry specifying the doctor's specialization(category) to retrieve a list of doctors that match the specialization. The required information is available in a microservice deployed in the </span><a href="https://docs.wso2.com/display/EI611/Key+Concepts#KeyConcepts-msf4j" style="text-decoration: none;"><span style="background-color: white; color: #3366cc; font-family: "arial"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">MSF4J profile</span></a><span style="background-color: white; color: #333333; font-family: "arial"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> of WSO2 EI. We will configure an API resource in WSO2 Enterprise Integrator (Ballerina) that will receive the client request, instead of the client sending messages directly to the back-end service, thereby decoupling the client and the back-end service. </span></div><b id="docs-internal-guid-4fd226d3-3ed6-5bbb-c059-ddc3d18ec41b" style="font-weight: normal;"><br />
</b> <br />
<div dir="ltr" style="background-color: #f3f9f4; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: white; color: #333333; font-family: "arial"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Before you begin</span><span style="background-color: white; color: #333333; font-family: "arial"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">,</span></div><ol style="margin-bottom: 0pt; margin-top: 0pt;"><li dir="ltr" style="background-color: white; color: #333333; font-family: Arial; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 8pt; padding: 3.75pt 0pt 3.75pt 0pt;"><span style="background-color: white; color: #333333; font-family: "arial"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Install Oracle Java SE Development Kit (JDK) version 1.8.* and set the JAVA_HOME environment variable.</span></div></li>
<li dir="ltr" style="background-color: white; color: #333333; font-family: Arial; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; padding: 3.75pt 0pt 3.75pt 0pt;"><span style="background-color: white; color: #333333; font-family: "arial"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Download the WSO2 EI ZIP file from </span><a href="http://wso2.com/integration/" style="text-decoration: none;"><span style="background-color: white; color: #3366cc; font-family: "arial"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">here</span></a><span style="background-color: white; color: #333333; font-family: "arial"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">, and then extract the ZIP file. </span></div></li>
<li dir="ltr" style="background-color: white; color: #333333; font-family: Arial; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; padding: 3.75pt 0pt 3.75pt 0pt;"><span style="background-color: white; color: #333333; font-family: "arial"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">The path to this folder will be referred to as <ei_home> throughout this tutorial.</ei_home></span></div></li>
<li dir="ltr" style="background-color: white; color: #333333; font-family: Arial; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; padding: 3.75pt 0pt 3.75pt 0pt;"><span style="background-color: white; color: #333333; font-family: "arial"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Download the MSF4J service from </span><a href="https://github.com/wso2-docs/WSO2_EI/blob/master/Back-End-Service/Hospital-Service-2.0.0.jar" style="text-decoration: none;"><span style="background-color: white; color: #3366cc; font-family: "arial"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">here</span></a><span style="background-color: white; color: #333333; font-family: "arial"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> and copy the JAR file to <ei_home>/wso2/msf4j/deployment/microservices folder. The back-end service is now deployed in the MSF4J profile of WSO2 EI.</ei_home></span></div></li>
</ol><h3 dir="ltr" style="background-color: white; line-height: 1.7999999999999998; margin-bottom: 0pt; margin-top: 14pt;"><span style="background-color: white; color: #333333; font-family: "arial"; font-size: 13pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Creating the Ballerina service</span></h3><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">In this section we will create a Ballerina service using the Ballerina Composer to run with the Ballerina runtime that will send the incoming requests to the HealthCare backend service.</span></div><b style="font-weight: normal;"><br />
</b> <br />
<ol style="margin-bottom: 0pt; margin-top: 0pt;"><li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Install ballerina if you haven’t already, as explained in </span><a href="http://ballerinalang.org/docs/user-guide/0.8/quick-tour/#install-ballerina" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Install Ballerina</span></a><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">. Now start the ballerina composer by running the command “composer” in command line.</span></div></li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Click on new button of the welcome page to start a new .bal file.</span></div></li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">On the tool palette, click the service icon and drag it to the canvas. A new service and resource will be created for you.</span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img height="383" src="https://lh5.googleusercontent.com/iXlrb1CfNBlqAcFNQ_u9J9fUAdKIM_qcywxZtkX4UuwBUZUUmwcOVdUVFbWzu1TenwJOG5VHrbYz0Te9Aps9dlVhDEeglCl_kx2D16WsBVav1YQYs2a-zboaYT-h3rjn3eqpSOhl" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="624" /></span></div></li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Let's rename the service and resource. Highlight the name “Service1” and type “healthcareService” in its place. Change Resource1 to “doctorResource” in the same way.</span></div></li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Let’s set the base path for our service. In the upper right corner of the myEchoService box (not the resource box this time), click the Annotations (@) icon. Make sure http:BasePath is selected in the list, type /healthcare in the text box, and then press Enter or click the + symbol to its right. Now our service is available in </span><a href="http://localhost:9090/healthcareService" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">http://localhost:9090/healthcareService</span></a><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> url.</span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img height="109" src="https://lh4.googleusercontent.com/LbUJcmodUEXU8sAGfcOCvzgx_0J_tDFZxomfsQ2SOaORjSuOgWoPtkmu_h1-m3dZPakqhv0huI-o_IWukYgGgd-Vyf31lKdSQmFJ1bVoY6Y6wDv0TBxZhJim_BvKRDsgP_RSAj9m" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="624" /></span></div></li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Now let’s add the rest of the resource path of our service with path params. Click the Annotations (@) icon in the upper right corner of the doctorResource box (not the service box). Select “ballerina.net.http” and then select “path”. Then type “"/queryDoctor/{category}” in the text box of the “value” sub field, and then press Enter or click the + symbol to its right.</span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img height="101" src="https://lh6.googleusercontent.com/8A0VmX8ny8WhXsNxEWNYPhwpE7sJVWsZr67jiezP35jPOzyy7z_BmHg-4rGT-sr96F9p-HNogO2pv8yMbINH1hqgLFvmuUNSDukmON12vf4n9ACcocsXOoRtttQEZT8LuCoT6VpP" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="624" /></span></div></li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">We need to pass the “category” path param to the backend. We need to add a new variable to the “doctorResource” method to retrieve this category. Locate the “Add param” text box next to the doctorResource resource name. Add following parameter to retrieve the category path param. </span></div></li>
</ol><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;"><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">@http:PathParam{value:"category"} string category</span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img height="103" src="https://lh6.googleusercontent.com/VktjY9Y5VW1xGfEL_AjZ8CUwv24LCB_dL9CN_NrSbceheX-OobVrm7jl9PPrfdVsSPTs_MkaH8GV-l6tZRAfV0Jg-my_pyJuBQxwyGgWmm-OiMI5jBDegPUqPDxNdgq2vJ70nCYo" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="624" /></span></div><b style="font-weight: normal;"><br />
</b> <br />
<ol start="8" style="margin-bottom: 0pt; margin-top: 0pt;"><li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Now if you go to the source view of the service, it will look like below.</span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img height="143" src="https://lh6.googleusercontent.com/nvCmJyP12A43QaOOyWteLyczDOUmlicS_y9iKHhtAIQAEtnbBzOfSX7qq8tVgy69B7K2gvpqojJLbx7q0QEpIwYQaN62d_L5zz0ECuA6tstaIiijyffV6bMo4sXVbflROi-5S1XQ" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="624" /></span></div></li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Go to the File > save(ctrl+s) to save the file. Give the name healthcareService.bal.</span></div></li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Go back to the design view and click on the “ballerina.net.http” from the Connectors tab in the tool palette.</span></div></li>
</ol><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: center;"><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img height="154" src="https://lh5.googleusercontent.com/GTfZULE5QxhvToKt9WIEJ6hJs5i0Jpplt8vDYeXyChYmYekGbDLobClAbJpkJn4ERU0erm-2fqwJ9ngnmSmVK_fzCOF3FHdPyuxvQ8pNxHsoMh-ub4dNI_dK6_SvNsFHjtO7nU2b" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="116" /></span></div><ol start="11" style="margin-bottom: 0pt; margin-top: 0pt;"><li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Now drag and drop the Client Conenctor</span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img height="20" src="https://lh4.googleusercontent.com/z59_B7YyLd5PhaD5AkTfZX1mrBhYAEcCRp-L9mHHKSjHWG8zMvGer5Qy0hY_G-5PVsyV1u8skH5FaUZHkFzuPhZ0yn7s4PKsiPmNND4qRA_fA_T9T_Kzo4Ru1Q2JlNmWQpmXfGZB" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="95" /></span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> into the doctorResource resource box.</span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img height="169" src="https://lh5.googleusercontent.com/VR5N3ObtKmN6lO3pwZAwIdKa3DAm5j7pi-7gwdFzSRQQnhPmFB3R-BxYzcNpcvsBiNgxEsl86lFPLOlYUOtWCixVdyWV9haDt1dy9KPMk7TcWEgLyszwNRYnW3yq7z5Avqm7kDUH" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="624" /></span></div></li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Now click on the string “endpoint1” in the client connector lifeline and edit the client connector. Change “endpoint1” to doctorEP and give “</span><a href="http://localhost:9095/" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">http://localhost:9095</span></a><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">” inside the ClientConnector() method as a parameter which is the URL of our Msf4j server.</span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img height="177" src="https://lh6.googleusercontent.com/d40ALaGj6SQmI2tou1hvG7PuM3UE7lETO8_emURvumcrfrfOpnQvSJlGoH50XoXzRizSKJGlWy0J9A2qanrFgRbtgIS8vuVA3H-_R_LZ9Wjsr7s1h4hlkWVBELRy_lGuS7LDm4sG" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="624" /></span></div></li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">The full URL to the backend service should be </span><a href="http://localhost:9095/healthcare/%7Bcategory" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">http://localhost:9095/healthcare/{category</span></a><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">}. Let’s create a variable with this value. Drag a assignment (</span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img height="20" src="https://lh3.googleusercontent.com/4YeqWOL1CKr5V-K-bxXttoSwF0D2peNV_U4mRd4k8H71HNNQihiattHv6qmuhWDAMsyvXpxB3YK4sfwnjfHWcft84n1kZFLDodvoXJplB-eOIJOV4NoGi8qyNBCpfgBPue_CK5YK" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="73" /></span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">) from the tool palette on to top of the default lifeline. Click on it and change the value to following.</span></div></li>
</ol><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;"><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">string path = "/healthcare/"+ category</span></div><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;"><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img height="157" src="https://lh6.googleusercontent.com/Nmk5jnuLTpiw18qTeuVDGEJ8R3J_NwG7L3v5ptQBhmcl8vIp0CVEZoODn3s_lu8Ir11ORdE3vH9TzyUa63PGQ2qctIrZdsiQO9vvtg8UPZhj27MpFZ9czB4Zt75cbgDm9Sf6ZvLv" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="198" /></span></div><ol start="14" style="margin-bottom: 0pt; margin-top: 0pt;"><li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Since we are doing a GET rest call to the backend, drag and drop a get action (</span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img height="20" src="https://lh3.googleusercontent.com/cKRVH-ce4F9oRXZ3cfkbgZn0fnNVpA_Q3Rl9WZ6331JDLRELLUBweYysukBKqNwTX3AghAPmOc-hA4u2AE0I2VOjh1WqtrqiSyGageG1iCc4M1jIcXHT7jptwRvbB6qX9X1IfBdm" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="56" /></span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">) from the connector tool palette to the default lifeline. Then draw a flow from get action to doctorEP lifeline. You can start drawing the flow by hovering over the get action and once the cursor changes to a pencil.</span></div></li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Now click on the get action and change it’s content to following,</span></div></li>
</ol><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">message response = http:ClientConnector.get(doctorEP, path, m)</span></div><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: center;"><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img height="172" src="https://lh6.googleusercontent.com/_DS0wt5wa5yVO4mCgukOUmDza5vrC_RsBQNjcs19h0ViV-2v6JN5V2tkGsYajc5B8YEIZwWHf3MEeHfrSsk7w9sN7rzNNOGBN-eSp4F-CZaFb5TFDOZbyb9TKOiAJ9u6auSIog1R" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="382" /></span></div><ol start="16" style="margin-bottom: 0pt; margin-top: 0pt;"><li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Now we have assigned the response from the backend to a “message” type called response. Now drag and drop a reply action(</span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img height="20" src="https://lh6.googleusercontent.com/R0q6QFwr9GJKjuVQr1FTmAI1d3046mZyeDudSMDMVBQHHKPWVNecZH73OhlIey9l2i7h0Dc38ffJuJju7hD5fEzXC4HADwZUGTukf886dxt5vxNDDnAu0dhXOWo05ne66pj6OcN9" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="69" /></span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">) from the main tool palette on to the default lifeline after the get action.</span></div></li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Click on the reply action and type “response” in the box to reply with the same message from the server.</span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img height="247" src="https://lh3.googleusercontent.com/ipqD1_f2U18rVUH1Cghw-fI4hLZa3M6tIw-tvjohDF_MjH1LCsoUOdJCNLCwyjurVRYAk_KJNAJWPcyJXgD3RU6yHkb_6XmeknDOwhHPu_-DERiYHGyJU5xQ8sPesxoZEF5vFxsK" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="476" /></span></div></li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Now the full sequence of our Ballerina service will be look like below.</span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img height="349" src="https://lh3.googleusercontent.com/y8-BZjlcyfxqb4UG5ed6g_R3oR1tVbEaL_MA0sg8mRn_3uG5XnV3-jF9yCCifQBPjzu_8uou6bHQnxKUeEwsreSn5xRHOYLtjH5zazM0Vo7g1g0zo4EHwq8T36lIxH9rBrbXzWZY" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="624" /></span></div></li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">The source code for the service will be following.</span><script src="https://gist.github.com/vinok88/69dbec6805b72d639eeb9eeb396f7257.js"></script><br />
</div><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></div></li>
</ol><div dir="ltr" style="margin-left: -12pt;"></div><h3 dir="ltr" style="line-height: 1.38; margin-bottom: 4pt; margin-top: 16pt;"><span style="background-color: transparent; color: #434343; font-family: "arial"; font-size: 13.999999999999998pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Running the ballerina Service</span></h3><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Now we can start our service. You can either use the composer to start the program or ballerina CLI tools.</span></div><ul style="margin-bottom: 0pt; margin-top: 0pt;"><ul style="margin-bottom: 0pt; margin-top: 0pt;"><li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: circle; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Click on the play button on top right corner and select server to start from the server.</span></div></li>
</ul></ul><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt; text-align: center;"><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 13pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img height="106" src="https://lh6.googleusercontent.com/S5EHrtW4CkrquZ1Pdz20VaWqheBaIO_2r7atVOMHzJn1vSArWmq9PpcNBQ2P6Nw347JFSMdhaq9n6cMttVUr1lE8ZBlqX8p4-pkxmmoIgFPK7EFkR20t04-Tr9ib4Hg1tIsJnHdB" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="95" /></span></div><ul style="margin-bottom: 0pt; margin-top: 0pt;"><ul style="margin-bottom: 0pt; margin-top: 0pt;"><li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: circle; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">If you are using the CLI tools, go to the folder the healthcareService.bal file saved and run following command(You should have added Ballerina bin folder to the PATH variable).</span></div></li>
</ul></ul><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 72pt; margin-top: 0pt;"><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">ballerina run service healthCareService.bal</span></div><b style="font-weight: normal;"><br />
</b> <br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">You will get following message in the console after successfully starting the service.</span></div><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 72pt; margin-top: 0pt;"><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img height="90" src="https://lh6.googleusercontent.com/1XXIi7Rbk-Be-EUJhOxTcOASOao644SgPpsTwYobYrDiCnk0tAJZprjPwRJoXsYpyo8oortsKoCXhR-hJzBP2sSvPwuo9lQSGTlin0J-CCsGeNnMs0_aMpTfe3Qc8H2RCrmvEUO8" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="522" /></span></div><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt; text-align: center;"><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> </span></div><h3 dir="ltr" style="background-color: white; line-height: 1.7999999999999998; margin-bottom: 0pt; margin-top: 14pt;"><span style="background-color: transparent; color: black; font-family: "arial"; font-size: 13pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Starting the MSF4J profile</span></h3><div dir="ltr" style="background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 8pt;"><span style="background-color: transparent; color: #333333; font-family: "arial"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">To be able to send requests to the back-end service (which is an MSF4J service deployed in MSF4J profile), you need to first start the MSF4J runtime:</span></div><ol style="margin-bottom: 0pt; margin-top: 0pt;"><li dir="ltr" style="background-color: transparent; color: #333333; font-family: Arial; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 8pt; padding: 3.75pt 0pt 3.75pt 0pt;"><span style="background-color: transparent; color: #333333; font-family: "arial"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Open a terminal and navigate to the <ei_home>/wso2/msf4j/bin directory.</ei_home></span></div></li>
<li dir="ltr" style="background-color: transparent; color: #333333; font-family: Arial; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; padding: 3.75pt 0pt 3.75pt 0pt;"><span style="background-color: transparent; color: #333333; font-family: "arial"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Since both msf4j and ballerina is running on port 9090 by default, let’s change the default port of msf4j to be able to run the both in same server machine. Go to the <ei_home>/wso2/msf4j/conf/transports/netty-transports.yml and change the value of the “port” to 9095.</ei_home></span></div></li>
<li dir="ltr" style="background-color: transparent; color: #333333; font-family: Arial; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: transparent; color: #333333; font-family: "arial"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Start the runtime by executing the MSF4J startup script as shown below.</span></div></li>
</ol><div dir="ltr" style="margin-left: 0pt;"><table style="border-collapse: collapse; border: none;"><colgroup><col width="624"></col></colgroup><tbody>
<tr style="height: 37pt;"><td style="background-color: #f7f7f7; padding: 0pt 0pt 0pt 11pt; vertical-align: middle;"><div dir="ltr" style="line-height: 1.7142857142857142; margin-bottom: 8pt; margin-top: 27pt;"><span style="background-color: transparent; color: #333333; font-family: "consolas"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">sh carbon.sh</span></div></td></tr>
</tbody></table></div><div dir="ltr" style="background-color: white; line-height: 1.38; margin-bottom: 0pt; margin-top: 8pt;"><span style="background-color: transparent; color: #333333; font-family: "arial"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">The Healthcare service is now active and you can start sending requests to the service.</span></div><h3 dir="ltr" style="background-color: white; line-height: 1.38; margin-bottom: 4pt; margin-top: 8pt;"><span style="background-color: transparent; color: #434343; font-family: "arial"; font-size: 13.999999999999998pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Running the sample</span></h3><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: white; color: #333333; font-family: "arial"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Open a command line terminal and enter the following request:</span></div><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: white; color: #333333; font-family: "arial"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: white; color: #333333; font-family: "verdana"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">curl -v http://localhost:9090/healthcare/querydoctor/surgery</span></div><b style="font-weight: normal;"><br />
</b> <br />
<div dir="ltr" style="margin-left: 0pt;"><table style="border-collapse: collapse; border: none; width: 468pt;"><colgroup><col width="*"></col></colgroup><tbody>
<tr style="height: 0pt;"><td style="border-bottom: solid #000000 1pt; border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-top: solid #000000 1pt; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"><div dir="ltr" style="background-color: #fcfcfc; line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: white; color: #333333; font-family: "arial"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">This is derived from the request path define when creating the API resource.</span></div><div dir="ltr" style="background-color: #fcfcfc; line-height: 1.2; margin-bottom: 0pt; margin-top: 8pt;"><span style="background-color: white; color: #333333; font-family: "arial"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">http://<host>:<port>/</port></host></span><span style="background-color: white; color: #333333; font-family: "verdana"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">healthcare/</span><span style="background-color: white; color: #333333; font-family: "arial"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">querydoctor/{category}Other categories you can try sending in the request are:</span></div><ul style="margin-bottom: 0pt; margin-top: 0pt;"><li dir="ltr" style="background-color: white; color: #333333; font-family: Arial; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 8pt;"><span style="background-color: white; color: #333333; font-family: "arial"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">cardiology</span></div></li>
<li dir="ltr" style="background-color: white; color: #333333; font-family: Arial; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: white; color: #333333; font-family: "arial"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">gynaecology</span></div></li>
<li dir="ltr" style="background-color: white; color: #333333; font-family: Arial; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: white; color: #333333; font-family: "arial"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">ent</span></div></li>
<li dir="ltr" style="background-color: white; color: #333333; font-family: Arial; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.2; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: white; color: #333333; font-family: "arial"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">paediatric</span></div></li>
</ul></td></tr>
</tbody></table></div><b style="font-weight: normal;"><br />
</b> <br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: white; color: #333333; font-family: "arial"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">You will see the response message from HealthcareService with a list of all available doctors and relevant details.</span></div><b style="font-weight: normal;"><br />
</b> <br />
<div dir="ltr" style="margin-left: 0pt;"><table style="border-collapse: collapse; border: none; width: 468pt;"><colgroup><col width="*"></col></colgroup><tbody>
<tr style="height: 0pt;"><td style="border-bottom: solid #000000 1pt; border-left: solid #000000 1pt; border-right: solid #000000 1pt; border-top: solid #000000 1pt; padding: 5pt 5pt 5pt 5pt; vertical-align: top;"><div dir="ltr" style="line-height: 1.6363636363636362; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: #f7f7f7; color: #333333; font-family: "consolas"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">[{"name":"thomas collins",</span></div><div dir="ltr" style="line-height: 1.6363636363636362; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: #f7f7f7; color: #333333; font-family: "consolas"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> "hospital":"grand oak community hospital",</span></div><div dir="ltr" style="line-height: 1.6363636363636362; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: #f7f7f7; color: #333333; font-family: "consolas"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> "category":"surgery",</span></div><div dir="ltr" style="line-height: 1.6363636363636362; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: #f7f7f7; color: #333333; font-family: "consolas"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> "availability":"9.00 a.m - 11.00 a.m",</span></div><div dir="ltr" style="line-height: 1.6363636363636362; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: #f7f7f7; color: #333333; font-family: "consolas"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> "fee":7000.0},</span></div><div dir="ltr" style="line-height: 1.6363636363636362; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: #f7f7f7; color: #333333; font-family: "consolas"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> {"name":"anne clement",</span></div><div dir="ltr" style="line-height: 1.6363636363636362; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: #f7f7f7; color: #333333; font-family: "consolas"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> "hospital":"clemency medical center",</span></div><div dir="ltr" style="line-height: 1.6363636363636362; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: #f7f7f7; color: #333333; font-family: "consolas"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> "category":"surgery",</span></div><div dir="ltr" style="line-height: 1.6363636363636362; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: #f7f7f7; color: #333333; font-family: "consolas"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> "availability":"8.00 a.m - 10.00 a.m",</span></div><div dir="ltr" style="line-height: 1.6363636363636362; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: #f7f7f7; color: #333333; font-family: "consolas"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> "fee":12000.0},</span></div><div dir="ltr" style="line-height: 1.6363636363636362; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: #f7f7f7; color: #333333; font-family: "consolas"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> {"name":"seth mears",</span></div><div dir="ltr" style="line-height: 1.6363636363636362; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: #f7f7f7; color: #333333; font-family: "consolas"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> "hospital":"pine valley community hospital",</span></div><div dir="ltr" style="line-height: 1.6363636363636362; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: #f7f7f7; color: #333333; font-family: "consolas"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> "category":"surgery",</span></div><div dir="ltr" style="line-height: 1.6363636363636362; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: #f7f7f7; color: #333333; font-family: "consolas"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> "availability":"3.00 p.m - 5.00 p.m",</span></div><div dir="ltr" style="line-height: 1.6363636363636362; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: #f7f7f7; color: #333333; font-family: "consolas"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> "fee":8000.0}</span></div></td></tr>
</tbody></table></div><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"><span style="background-color: white; color: #333333; font-family: "arial"; font-size: 10.5pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Now we have successfully created a service in ballerina and invoked a microservice in Msf4j. Here the Ballerina HTTP connector is used to invoke the healthcare API.</span></div></div>VinodKhttp://www.blogger.com/profile/02960208450297288533noreply@blogger.com0tag:blogger.com,1999:blog-3890523993479372916.post-83717730782647971142017-08-21T09:03:00.000+05:302017-08-21T09:03:52.356+05:30Disable JavaDoc DocLint from CommandLine<div dir="ltr" style="text-align: left;" trbidi="on">
DocLint is a plugin that validates your JavaDoc comments for html tags and several other syntax like missing params etc..<br />
DocLint is enabled by default in Java 8. There can be legacy code that is not compliant with these validations which is hard to fix as well. But when you release such a code base in Java 8 with java doc generation enabled, your release will fail.<br />
<br />
This can be done by disabling DocLint while the Maven release using following command.<br />
<br />
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><b>mvn -Darguments='-Dadditionalparam=-Xdoclint:none' release:prepare release:perform </b></span><br />
<br />
Reference : <a href="https://maven.apache.org/plugins/maven-javadoc-plugin/javadoc-mojo.html#doclint">https://maven.apache.org/plugins/maven-javadoc-plugin/javadoc-mojo.html#doclint</a><br />
<br /></div>
VinodKhttp://www.blogger.com/profile/02960208450297288533noreply@blogger.com0tag:blogger.com,1999:blog-3890523993479372916.post-29984336148860103822017-08-18T10:15:00.000+05:302017-08-18T10:15:01.050+05:30WSO2 ESB - Adding a thread sleep<div dir="ltr" style="text-align: left;" trbidi="on">
There can be situations where your <a href="http://wso2.com/library/articles/2017/07/what-is-wso2-esb/" target="_blank">ESB</a> logic need thread sleeps to delay the executions. In <a href="http://wso2.com/products/enterprise-service-bus/" target="_blank">WSO2 ESB</a>, this can be easily done using the <a href="https://docs.wso2.com/display/EI611/Script+Mediator" target="_blank">script mediator</a>.<br />
<br />
Following is the synapse code of the script mediator to add 1000ms thread sleep.<br />
<br />
<script src="https://gist.github.com/vinok88/0b818c74b717ae90d50db3745a85f9e6.js"></script><br />
<br />
Feel free to use and share !! </div>
VinodKhttp://www.blogger.com/profile/02960208450297288533noreply@blogger.com0tag:blogger.com,1999:blog-3890523993479372916.post-643565175487722292017-06-23T14:52:00.000+05:302017-06-23T14:52:53.300+05:30WSO2 ESB / EI Mediation Latencies with JMX monitoring<div dir="ltr" style="text-align: left;" trbidi="on">
WSO2 ESB/EI is equipped with JMX monitoring capabilities. This is explained in WSO2 <a href="https://docs.wso2.com/display/ESB500/JMX+Monitoring" target="_blank">docs</a>. But with this configurations you can't see advance mediation statistics like mediation level latencies. In order to enable them, add following two entries in the <span style="background-color: whitesmoke; color: #333333; font-family: Arial, sans-serif; font-size: 14px; orphans: 2; widows: 2;">passthru-http.properties file. </span><br />
<br />
synapse.passthrough.latency_view.enable_advanced_view=true<br />
synapse.passthrough.s2slatency_view.enable_advanced_view=true<br />
<br />
Then you can view the time taken in mediation layer (request and response) separately apart from the total latencies.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD92o8kxev4y745272wd0nVkQuKBa9eIhnoYWyksu8tzN_dIslNF1yew92yd8gg7oHB7c1nKutVjX-uJQwq62YBfuUg0q0XBoyHXP2sC9rNg81LAh5dKliWOZrUhdoU_EWol32TEkQ8NQ/s1600/Screen+Shot+2017-06-22+at+4.43.40+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="164" data-original-width="720" height="72" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD92o8kxev4y745272wd0nVkQuKBa9eIhnoYWyksu8tzN_dIslNF1yew92yd8gg7oHB7c1nKutVjX-uJQwq62YBfuUg0q0XBoyHXP2sC9rNg81LAh5dKliWOZrUhdoU_EWol32TEkQ8NQ/s320/Screen+Shot+2017-06-22+at+4.43.40+PM.png" width="320" /></a></div>
<br />
Cheers!</div>
VinodKhttp://www.blogger.com/profile/02960208450297288533noreply@blogger.com0tag:blogger.com,1999:blog-3890523993479372916.post-17434292831500812832017-06-16T09:46:00.000+05:302017-06-16T09:47:00.076+05:30WSO2 BPS : BPEL Versionning<div dir="ltr" style="text-align: left;" trbidi="on">
<span id="docs-internal-guid-ae4632e2-af15-d28c-aa14-717ae6aac8d4"><span style="font-family: "arial"; font-size: 11pt; vertical-align: baseline; white-space: pre-wrap;">The versioning of bpel processes is very useful when you need to update a process which is already in production. If you try to undeploy the existing process and deploy the updated process, it will remove all the existing process instances of the previous BPEL package also. Versioning enables updating your processes without affecting existing instances.</span></span><br />
<span style="font-family: "arial"; font-size: 11pt; vertical-align: baseline; white-space: pre-wrap;"><br /></span>
<span style="font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-position: normal; vertical-align: baseline;"><span style="font-family: "arial";"><span style="font-size: 11pt; white-space: pre-wrap;">BPEL packages(.zip) with same name are eligible for </span></span></span><span style="font-family: "arial";"><span style="font-size: 14.666666984558105px; white-space: pre-wrap;">versioning. If two packages with same name are different in content, BPS will retire the existing version and deploy a new version with the new package.</span></span><br />
<span style="font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-position: normal; vertical-align: baseline;"><span style="font-family: "arial";"><span style="font-size: 11pt; white-space: pre-wrap;">There are three ways you can deploy a BPEL process in BPS. Let's see how </span></span></span><span style="font-family: "arial";"><span style="font-size: 14.666666984558105px; white-space: pre-wrap;">versinning works in each of method.</span></span><br />
<br />
<ul style="text-align: left;">
<li><span style="font-family: "arial";"><span style="font-size: 14.666666984558105px; white-space: pre-wrap;">Deploying through management console - versioning is supported.</span></span></li>
<li><span style="font-family: "arial";"><span style="font-size: 14.666666984558105px; white-space: pre-wrap;">Deploying through a carbon application (capp) - versioning not supported.</span></span></li>
<li><span style="font-family: "arial";"><span style="font-size: 14.666666984558105px; white-space: pre-wrap;">Deploying by copying the package to deployment directory - If you replace the existing package, versioning is supported. But if you remove existing one and later copy the new package, it will un-deploy the old package.</span></span></li>
</ul>
<br />
<span style="font-family: "arial";"><span style="font-size: 14.666666984558105px; white-space: pre-wrap;"><br /></span></span>
<span style="font-family: "arial"; font-size: 11pt; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
VinodKhttp://www.blogger.com/profile/02960208450297288533noreply@blogger.com0tag:blogger.com,1999:blog-3890523993479372916.post-70682107784022385392017-05-23T12:32:00.001+05:302017-05-23T12:34:41.957+05:30WSO2 ESB message flow<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: inherit;">This post explains the message flow of the synapse which is the main building block of WSO2 ESB.</span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">Synapse receives the message from the axis2 transport layer. Inside this transport layer, message will be built based on the content type of the message and then passed over to the Synapse. </span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">Following is the Inflow of the message from the entry point to synapse,</span><br />
<br />
<script src="https://gist.github.com/vinok88/005880a3177bb831ef61de511aabf38c.js"></script><br />
<br />
Inside the Axis2FlexibleMEPClient.send() method, a callback is registered in axis2 transport layer and message is dispatched out of the synapse. Then the axis2 transport layer format this message based on the content type and send it to the backend.<br />
<br />
When the response is coming from a backend service, transport layer identifies this and synapse response path is invoked.<br />
<br />
Following is the synapse response path,<br />
<br />
<script src="https://gist.github.com/vinok88/c98e1e860a1fa8500ff5bf2bc9c07ece.js"></script><br />
<br />
This completes the message flow for the following proxy service configuration.<br />
<br />
<script src="https://gist.github.com/vinok88/f2c141696d01bf2837ec0052c194df19.js"></script><br />
<br /></div>
VinodKhttp://www.blogger.com/profile/02960208450297288533noreply@blogger.com0tag:blogger.com,1999:blog-3890523993479372916.post-38503687326357407782017-05-22T09:52:00.000+05:302017-05-22T10:04:58.536+05:30Processing Binary Data from TCP transport in WSO2 ESB<div dir="ltr" style="text-align: left;" trbidi="on">This post describes how to process binary data over TCP transport in WSO2 ESB.<br />
<br />
<br />
<ul style="text-align: left;"><li>First we need to enable binary transport. Add following entries in ESB_HOME<esb_home>/repository/conf/axis2/axis2.xml.<span style="font-family: "courier new" , "courier" , monospace;"> <script src="https://gist.github.com/vinok88/3cd34db7b610bab9e46999c05405716c.js"></script></span></li>
</ul><div><span style="font-family: "courier new" , "courier" , monospace;"><br />
</span></div><div><ul style="text-align: left;"><li>Now you need to add the message formatters and message builders to be used. Since we are using binary data, add following entry inside <span style="font-family: "courier new" , "courier" , monospace;">messageFormatters</span> element.<span style="font-family: "courier new" , "courier" , monospace;"> <script src="https://gist.github.com/vinok88/c6221ed853a1804d739b2f3fe2250c70.js"></script></span></li>
</ul></div><div><span style="font-family: inherit;"> Add following entry inside</span> messageBuilders element. <script src="https://gist.github.com/vinok88/21a4da43d8e98bafcf187bc914b127b5.js"></script></div><div><span style="font-family: "courier new" , "courier" , monospace;"><br />
</span></div><div><ul style="text-align: left;"><li><span style="font-family: inherit;">Now you can add a tcp proxy service to process the message. In that proxy service you need to add the same content type used in messageFormatter and messageBuilder configs. There are several other parameters specific to TCP proxies. Refer [1] for more info on that. Following is a sample proxy service that prints the binary message. <script src="https://gist.github.com/vinok88/bc5bdb6e74deaf60ebe4a55a5156bdd2.js"></script></span></li>
</ul><div></div><div><br />
</div><div><ul style="text-align: left;"><li>Now you can invoke this proxy service using a sample TCP client. End of message should be marked with a "|" symbol in this particular proxy service. </li>
</ul></div><div><a href="http://harshcreationz.blogspot.com/2015/02/two-way-tcp-transport-wso2-esb.html" target="_blank">two-way-tcp-transport-wso2-esb.html</a></div></div></div>VinodKhttp://www.blogger.com/profile/02960208450297288533noreply@blogger.com0tag:blogger.com,1999:blog-3890523993479372916.post-92222555225813412522017-03-09T12:32:00.002+05:302017-03-09T12:33:55.859+05:30Installing new features to WSO2 EI<div dir="ltr" style="text-align: left;" trbidi="on">
In WSO2 Enterprise Integrator, you cannot install new features via management console. That option has been removed. So in order to install a feature, we must use the POM based feature installation. This is explained in WSO2 docs [1]. There few changes you need to made in order to this POM.xml to work.<br />
<br />
<ul style="text-align: left;">
<li>The "destination" element value should be changed to, "wso2ei-6.0.0/wso2/components".</li>
<li>Value of the "dir" attribute in "replace" element should be, "wso2ei-6.0.0/wso2/components/default/configuration/org.eclipse.equinox.simpleconfigurator".</li>
</ul>
<div>
Optionally, Other than downloading p2 repo (which is over 2GB), the URL to P2 repo "http://product-dist.wso2.com/p2/carbon/releases/wilkes/" can be set as "metadataRepository" and "artifactRepository".</div>
<div>
<br /></div>
<div>
Following is a sample pom.xml that is used to install HL7 feature in EI.</div>
<div>
<br /></div>
<div>
<script src="https://gist.github.com/vinok88/5e131ed2512c5d330d565d98af55338c.js"></script></div>
<br />
[1] - https://docs.wso2.com/display/Carbon440/Installing+Features+using+pom+Files</div>
VinodKhttp://www.blogger.com/profile/02960208450297288533noreply@blogger.com0tag:blogger.com,1999:blog-3890523993479372916.post-46055172447801951612017-03-07T16:51:00.000+05:302017-03-07T16:51:28.826+05:30Resolving SSL related issue in WSO2 products for MySql 5.7 upward <div dir="ltr" style="text-align: left;" trbidi="on">
If you try to start aWSO2 product with Mysql 5.7 it will give the following warning and the product will not work.<br />
<br />
<span style="background-color: white; color: #242729;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">Wed Dec 09 22:46:52 CET 2015 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.</span></span><br />
<span style="background-color: white; color: #242729; font-size: 15px;"><span style="font-family: "courier new" , "courier" , monospace;"><br />
</span></span> <br />
<div style="orphans: 2; text-align: left; widows: 2;">
<span style="font-family: inherit;"><span style="color: #242729;"><span style="background-color: white;">This can be avoided for development purposes by not using SSL. For this the JDBC url for the database should be appended with "</span></span><span style="background-color: white;"><span style="color: #242729;"><span style="white-space: inherit;">useSSL=false". But it </span>cannot be<span style="white-space: inherit;"> appended with a & sign like in a normal URL. Use the following format. If not it may give xml </span></span></span><span style="color: #242729;">parsing errors.</span></span></div>
<div style="orphans: 2; text-align: left; widows: 2;">
<span style="font-family: inherit;"><span style="color: #242729;"><br />
</span></span></div>
<div style="orphans: 2; text-align: left; widows: 2;">
<script src="https://gist.github.com/vinok88/09127f9fff5b7c12b4d8e8d2c73c02e9.js"></script></div>
<div style="orphans: 2; text-align: left; widows: 2;">
<br /></div>
Then it will work as usual.</div>
VinodKhttp://www.blogger.com/profile/02960208450297288533noreply@blogger.com1tag:blogger.com,1999:blog-3890523993479372916.post-91329691898318144812016-02-12T12:46:00.000+05:302016-05-14T09:52:53.166+05:30BPMN REST tasks with WSO2 BPS<div dir="ltr" style="text-align: left;" trbidi="on">
<a href="http://wso2.com/products/business-process-server/" target="_blank">WSO2 BPS</a> supports invoking rest endpoints out of the box. Follow the following steps to add a RESTTask to your workflow using Activity BPMN 2.0 designer.<br />
<br />
<ol style="text-align: left;">
<li>Add the BPMN designer to your Eclipse installation using the update site <a href="http://activiti.org/designer/update/">here.</a> </li>
<li>Start a new BPMN project.</li>
<li>Add a new service task from the tasks palette.</li>
<li>Go to the task properties panel and open main config tab.</li>
<li>Select "Java class" as task type.</li>
<li>Give "org.wso2.carbon.bpmn.extensions.rest.RESTTask" as the Class name.</li>
<li>Now add fields with following names, and values in String value field, under documentation section.</li>
<ul>
<li>serviceURL - rest service endpoint</li>
<li>method - http method to use</li>
<li>basicAuthUsername - username if the endpoints are secured</li>
<li>basicAuthPassword - password for the username above</li>
<li>input - payload to be sent</li>
<li>outputVariable - process variable to save the response</li>
<li>headers - header values in the format "key1:value1,key2:value2"</li>
</ul>
</ol>
<div>
Now you can retrieve the response from the variable specified above in the succession steps of the workflow.</div>
<div>
<br /></div>
<div>
Refer the screenshot below to find out the important places you require inside eclipse designer.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiF83hyphenhyphenMQdVG4g_q99tBuHUFB_DHMXSuXckaQ9unxc-T3qaqEUrpmyu1iREZt5z2sUnxEnaOIqVZ4Zd41616MrZXyDsq3Tc74DTvwq3tkQXtg1SZzBi5QDlIFGfOnGsBhhVmevAhNVvJaI/s1600/Screen+Shot+2016-02-12+at+12.34.15+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="467" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiF83hyphenhyphenMQdVG4g_q99tBuHUFB_DHMXSuXckaQ9unxc-T3qaqEUrpmyu1iREZt5z2sUnxEnaOIqVZ4Zd41616MrZXyDsq3Tc74DTvwq3tkQXtg1SZzBi5QDlIFGfOnGsBhhVmevAhNVvJaI/s640/Screen+Shot+2016-02-12+at+12.34.15+PM.png" width="640" /></a></div>
<div>
<br /></div>
<h3 style="text-align: left;">
Changing the endpoint after process deployment</h3>
<div>
The REST endpoint could not change after deploying the process in above method. If you want to change the endpoint after deploying the process also, pointing to a registry location which contains an endpoint reference as mentioned in <a href="https://docs.wso2.com/display/BPS350/Endpoint+References" target="_blank">Endpoint+References</a>. For this add a field with name "serviceRef" instead of the "serviceURL" field and give the registry location of the service reference as the value.</div>
<div>
<br /></div>
<h3 style="text-align: left;">
Using json payloads</h3>
<div style="text-align: left;">
You can send json as the payload also.</div>
<div style="text-align: left;">
<br /></div>
Give the json payload to the input field. This time use the expression box in add field dialog to give the json value instead of string value box. Add new field called "outputMappings" and mention the mapping format from response json, similar to "var2:customer.name,var3:item.price" format.<br />
<br />
EDIT on 14/05/2016<br />
<h3 style="text-align: left;">
REST task sample</h3>
<div>
I have added a sample at <a href="https://github.com/vinok88/BPMNRESTSample" target="_blank">BPMNRESTSample</a>. This sample make a REST call to a mocky.io endpoint and display the response in a user task. Deploy the sample in WSO2 BPS and start a new process instance from BPMN Explorer shipped with BPS.</div>
<br />
Enjoy with REST!!<br />
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
</div>
VinodKhttp://www.blogger.com/profile/02960208450297288533noreply@blogger.com22tag:blogger.com,1999:blog-3890523993479372916.post-67087659747421604052016-02-12T10:51:00.003+05:302016-02-12T10:52:45.139+05:30WSO2 BPS - Customizing web apps<div dir="ltr" style="text-align: left;" trbidi="on">
Wso2 BPS 3.5.0 is shipped with two web applications, the Humantask Explorer and BPMN Explorer.<br />
By default it is configured to be used in a standalone BPS server. But they can be configured to other setups also. For this, you need to edit the config.json file. The web apps are located in the <Wso2Server_Home>/repository/deployments/server/jaggeryApps/ folder. I'll refer this as jaggery apps folder, now on. config.json is inside the <webapp_home>/configs folder.<br />
<br />
Now, let me explain different configurations one by one.<br />
<br />
<ol style="text-align: left;">
<li>Use the explorers in a different tenant domain other than the super tenant.</li>
<ul>
<li>Copy the relevant web app from jaggery apps folder into to the <WSO2_Home>/repository/tenants/<tenanat_id>/jaggeryapps folder.</li>
<li>Give the tenant name in the config.json.</li>
</ul>
<li>Run BPS in a separate server other than the web app container.</li>
<ul>
<li>Fill the bpsHost and bpsPort parameters in the config.json</li>
</ul>
</ol>
These are the only two configurations I can remember write now. There could me more!<br />
<br />
<br />
<br /></div>
VinodKhttp://www.blogger.com/profile/02960208450297288533noreply@blogger.com0tag:blogger.com,1999:blog-3890523993479372916.post-83434066121806662022015-09-29T09:19:00.001+05:302015-09-29T09:20:35.884+05:30Human Tasks : Assign both users and groups in a single people assignment<div dir="ltr" style="text-align: left;" trbidi="on">
Usual method of people assignment in WS Human tasks is using a logical people group. But it is not possible to assign to both people groups and users in a single logical people group. So in order to achieve this, you need to use literals as defined in <a href="http://docs.oasis-open.org/bpel4people/ws-humantask-1.1-spec-cs-01.html" target="_blank">WS Human Task Spec</a>.<br />
<br />
Following is a sample of assigning both groups and individuals inside same people assignment to potential owners. I have used and tested this in latest <a href="http://wso2.com/products/business-process-server/" target="_blank">WSO2 Business Process Server</a> successfully.<br />
<br />
<script src="https://gist.github.com/vinok88/5b617cfb3b733354a66e.js"></script></div>
VinodKhttp://www.blogger.com/profile/02960208450297288533noreply@blogger.com0tag:blogger.com,1999:blog-3890523993479372916.post-21717860275215915342015-07-22T23:52:00.002+05:302015-09-29T09:21:17.795+05:30WSO2 BPS : Business process monitoring with WSO2 Analytics <div dir="ltr" style="text-align: left;" trbidi="on">
Business process information can be monitored using <a href="https://docs.wso2.com/display/DAS300" target="_blank">WSO2 Data Analytics Server</a> (DAS). For this an event stream should be published to DAS. WSO2 BPS 3.5.0 supports publishing to DAS 3.0.0.<br />
<br />
Publishing data to DAS from BPS requires following steps. They are explained using the KPI sample in WSO2 BPS samples.<br />
<span id="docs-internal-guid-1f9fefdc-5397-dcd3-40cb-24ff1ab1658f"></span><br />
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="font-size: 14.6666666666667px; list-style-type: decimal; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="color: black; font-size: 14.6666666666667px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Times, Times New Roman, serif;">Configure DAS publishing extension.</span></span></div>
</li>
<li dir="ltr" style="font-size: 14.6666666666667px; list-style-type: decimal; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="color: black; font-size: 14.6666666666667px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Times, Times New Roman, serif;">Implement a business process with the configurations to publish the data to DAS.</span></span></div>
</li>
<li dir="ltr" style="font-size: 14.6666666666667px; list-style-type: decimal; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="color: black; font-size: 14.6666666666667px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Times, Times New Roman, serif;">Run the BPEL process and publish data to DAS.</span></span></div>
</li>
<li dir="ltr" style="font-size: 14.6666666666667px; list-style-type: decimal; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="color: black; font-size: 14.6666666666667px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Times, Times New Roman, serif;">Monitor information via DAS.</span></span></div>
</li>
</ol>
<div>
<span style="font-family: Times, Times New Roman, serif;"><span style="font-size: 14.6666669845581px; white-space: pre-wrap;"><br />
</span></span></div>
<div>
<div>
<span style="font-family: Times, 'Times New Roman', serif; font-size: 14.6666669845581px; line-height: 20.2399997711182px; white-space: pre-wrap;"><b>Configure DAS publishing extension</b></span></div>
<div>
<br /></div>
<div>
<span id="docs-internal-guid-1f9fefdc-53a2-8fee-e194-4ff709243104"><span style="font-family: Arial; font-size: 14.6666666666667px; vertical-align: baseline; white-space: pre-wrap;">Add the following extensionActivity to bps.xml, which is located in </span></span><span style="font-family: Arial; font-size: 14.6666666666667px; line-height: 1.38; white-space: pre-wrap;">/repository/conf/directory.</span></div>
</div>
<div>
<script src="https://gist.github.com/vinok88/36381ae3c55b5c1aad61.js"></script></div>
<div>
<span style="font-family: Arial;"><span style="font-size: 14.6666669845581px; line-height: 20.2399997711182px; white-space: pre-wrap;"><br />
</span></span></div>
<div>
<b>Create the BPEL process to publish data to DAS</b><br />
<b><br />
</b> <br />
<div>
<div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;">
<div style="line-height: 1.38;">
<span id="docs-internal-guid-1f9fefdc-53a7-f64d-55af-bdecb13afa26"><span style="font-family: Arial; font-size: 14.6666666666667px; vertical-align: baseline; white-space: pre-wrap;">In order to specify the server configuration details, and monitoring data (Payload, Correlation and Meta), BPS uses an XML configuration file. This configuration file should specify the BPEL process in the deploy.xml file (deployment descriptor file for a BPEL package). The analytics server profile is specified using </span></span><span style="font-family: Arial; font-size: 14.6666666666667px; line-height: 1.2; white-space: pre-wrap;"><analyticsserverprofiles></analyticsserverprofiles></span><span style="font-family: Arial; font-size: 14.6666666666667px; line-height: 1.38; white-space: pre-wrap;"> element <</span><span style="font-family: Arial; font-size: 14.6666666666667px; line-height: 1.38; white-space: pre-wrap;">analyticsServerProfiles></span><span style="font-family: Arial; font-size: 14.6666666666667px; line-height: 1.38; white-space: pre-wrap;">. Observe the analytics profile in the following deploy.xml. </span><span style="font-family: Arial; font-size: 14.6666666666667px; white-space: pre-wrap;">The ‘file:‘ in location is used to specify the file path to analytics server profile.</span></div>
<div>
<script src="https://gist.github.com/vinok88/ebaea9fe863fd44324fd.js"></script></div>
<span style="font-family: Arial; font-size: 14.6666669845581px; line-height: 20.2399997711182px; white-space: pre-wrap;">Let's create the analytics server profile. It takes the following xml structure.</span><br />
<br />
<div>
<script src="https://gist.github.com/vinok88/ca216ffa1158cfa52737.js"></script></div>
<br />
<span style="font-family: Arial; font-size: 14.6666669845581px; line-height: 20.2399997711182px; white-space: pre-wrap;">The connection element is used to describe the Analytics server information. Credential element describes the authentication info to authenticate to the Analytics server. Under the </span><streams style="font-family: Arial; font-size: 14.6666669845581px; line-height: 20.2399997711182px; white-space: pre-wrap;"> element, many Analytics streams can be defined. The following is the structure for a Analytics stream definition.</streams><br />
<br />
<div>
<script src="https://gist.github.com/vinok88/391dbecc963b2e5c1461.js"></script></div>
<br />
<br />
<div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-size: 14.6666669845581px; line-height: 20.2399997711182px; vertical-align: baseline; white-space: pre-wrap;"><span id="docs-internal-guid-1f9fefdc-8d18-b2c4-0581-850261b45f83"><span style="font-family: Arial; font-size: 14.6666666666667px; vertical-align: baseline;">A DAS <stream> definition should have the properties, ‘name’, ‘version’, ‘nickName’ and ‘description’. Under the <stream> </stream></span></span></span><span style="font-family: Arial; font-size: 14.6666666666667px; line-height: 20.2399997711182px; white-space: pre-wrap;">element, each of the data items published to analytics server is specified using the </span><data style="font-family: Arial; font-size: 14.6666666666667px; line-height: 20.2399997711182px; white-space: pre-wrap;"> child element <data>.</data></div>
</div>
</div>
</div>
<div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-size: 14.6666669845581px; line-height: 20.2399997711182px; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Arial; font-size: 14.6666666666667px; vertical-align: baseline;"> </span></span></div>
<div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;">
<div style="line-height: 1.38;">
<span style="color: black; font-family: Arial; font-size: 14.6666666666667px; vertical-align: baseline; white-space: pre-wrap;">The name attribute of the <key> element describes the key used by analytics server to identify the given data item and the type attribute describes the type of data item. Analytics server has three types of data. They are meta data, payload data and correlation data. This can be specified using the type attribute. The standard From syntax from BPEL is used to select the value of each key. When selecting a variable to be published to DAS, it can be specified as <</key></span><span style="font-family: Arial; font-size: 14.6666666666667px; line-height: 1.38; white-space: pre-wrap;">From variable=”quantity”/></span><span style="font-family: Arial; font-size: 14.6666666666667px; line-height: 1.38; white-space: pre-wrap;">. The variable name should be the same name used in the BPEL process. The following is a complete example of an AnalyticsServer Profile.</span></div>
<br />
<div>
<script src="https://gist.github.com/vinok88/95e116cafafb1aa873db.js"></script></div>
<br />
<div style="line-height: 1.38; margin-bottom: 0pt; margin-top: 10pt;">
<span style="color: black; vertical-align: baseline; white-space: pre-wrap;"><b><span style="font-family: Arial, Helvetica, sans-serif;">Run the BPEL Process and publish data to Analytics server</span></b></span><br />
<span style="color: black; vertical-align: baseline; white-space: pre-wrap;"><b><span style="font-family: Arial, Helvetica, sans-serif;"><br />
</span></b></span></div>
<div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;">
<div style="line-height: 1.38;">
<span style="color: black; font-family: Arial; font-size: 14.6666666666667px; vertical-align: baseline; white-space: pre-wrap;">When developing the BPEL process, the following information should be included in the BPEL process in order to DAS publishing to work. Under the process element in the BPEL script, define the DAS publishing extension.</span></div>
<br />
<div>
<script src="https://gist.github.com/vinok88/5596899b8a373bfe0648.js"></script></div>
<br />
<span style="font-family: Arial; font-size: 14.6666669845581px; line-height: 20.2399997711182px; vertical-align: baseline; white-space: pre-wrap;"><span style="color: black; font-family: Arial; font-size: 14.6666666666667px; vertical-align: baseline;">Also include the namespace found in </span><a href="http://wso2.org/bps/monitoring/publisher" style="font-family: Times; font-size: medium; line-height: 22.0799999237061px; text-decoration: none; white-space: normal;"><span style="color: #1155cc; font-family: Arial; font-size: 14.6666666666667px; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">http://wso2.org/bps/monitoring/publisher</span></a><span style="color: black; font-family: Arial; font-size: 14.6666666666667px; vertical-align: baseline;"> in the process declaration. Now, in the location where you want information published, include the following extension activity section.</span></span><br />
<br />
<div>
<script src="https://gist.github.com/vinok88/6bb272611038ab477fe1.js"></script></div>
<br />
<span style="vertical-align: baseline;"><span style="font-family: Arial; font-size: 14.6666669845581px; line-height: 20.2399997711182px; vertical-align: baseline; white-space: pre-wrap;"> </span></span> <br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="color: black; font-family: Arial; font-size: 14.6666666666667px; vertical-align: baseline; white-space: pre-wrap;">The publish element describes the name given to the Analytics server profile and the corresponding stream definition to get the configuration data. If all configurations are done correctly, when you run the BPEL process, the data is published to Analytics server.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-family: Times, 'Times New Roman', serif; font-size: 14.6666666666667px; line-height: 1.38; white-space: pre-wrap;"><br />
</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-family: Times, 'Times New Roman', serif; font-size: 14.6666666666667px; line-height: 1.38; white-space: pre-wrap;"><b>Monitor information via DAS</b></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-family: Times, 'Times New Roman', serif; font-size: 14.6666666666667px; line-height: 1.38; white-space: pre-wrap;"><b><br />
</b></span></div>
<div dir="ltr" style="margin-bottom: 0pt; margin-top: 0pt;">
<div style="line-height: 1.38;">
<span style="font-size: 14.6666666666667px; line-height: 1.38; white-space: pre-wrap;"><span style="font-family: Arial, Helvetica, sans-serif;">KPI sample shipped with WSO2 BPS is a bpel process can </span></span><span style="font-family: Arial; font-size: 14.6666666666667px; white-space: pre-wrap;">submit event information to the Analytics server. Let's setup the sample.</span></div>
<div style="line-height: 1.38;">
<span style="font-family: Arial; font-size: 14.6666666666667px; white-space: pre-wrap;"> </span></div>
<ul style="font-family: Arial; font-size: 14.6666666666667px; line-height: 1.38; white-space: pre-wrap;">
<li><span style="font-size: 14.6666666666667px; line-height: 1.38;">Start DAS without a port offset.</span></li>
<li><span style="font-size: 14.6666666666667px; line-height: 1.38;">Download and unzip BPS.</span></li>
<li><span style="font-size: 14.6666666666667px; line-height: 1.38;">Configure the bps.xml file in the repository/conf directory of bps by adding the DAS publishing extension as mentioned in step 1.</span></li>
<li><span style="font-size: 14.6666666666667px; line-height: 1.38;">Configure a port offset of 5 in carbon.xml.</span></li>
<li><span style="font-size: 14.6666666666667px; line-height: 1.38;">Upload KPIProcess.zip BPEL process in <bps_home>/repository/samples/bpel to BPS.</bps_home></span></li>
<li><span style="font-size: 14.6666666666667px; line-height: 1.38; vertical-align: baseline;">Now click on the services list and send the KPISampleProcess </span><span style="font-size: 14.6666666666667px; line-height: 1.38;">request as mentioned below using tryit editor. Send few more requests.</span></li>
<li><span style="font-size: 14.6666666666667px; line-height: 1.38;">Send a few request to the BPS process. It would publish this data to DAS and deploy a new stream definition with id ‘org.wso2.bam.phone.retail.store.kpi:1.0.0’.</span></li>
<li><span id="docs-internal-guid-1f9fefdc-8d54-e517-b62d-92c648673283">Log into DAS, click on the Streams under Manage tab to check the created stream definition.</span></li>
</ul>
<div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhi8G1ipqNt7-hoJX2B1-qdfJ6d1J40Xm_bgjzqI1fhXySZ-Brp5J3SS9LgMqfNkL39PJ8zZWjzeMU01qIkVBEKIf9hhAh__vx19uC247-4zNcV1pbMtY5t-SSWQwwzGovdUddfpLLQG08/s1600/Screen+Shot+2015-07-14+at+9.46.21+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="139" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhi8G1ipqNt7-hoJX2B1-qdfJ6d1J40Xm_bgjzqI1fhXySZ-Brp5J3SS9LgMqfNkL39PJ8zZWjzeMU01qIkVBEKIf9hhAh__vx19uC247-4zNcV1pbMtY5t-SSWQwwzGovdUddfpLLQG08/s640/Screen+Shot+2015-07-14+at+9.46.21+PM.png" width="640" /></a></div>
<div>
<ul>
<li><span style="font-family: Arial; font-size: 14.6666666666667px; line-height: 1.38; white-space: pre-wrap;">Click edit under actions column. This will show all the information of the event stream. Do not change anything here for this sample. It will change the stream.</span></li>
<li><span style="font-family: Arial; font-size: 14.6666666666667px; line-height: 1.38; white-space: pre-wrap;">We need to persist the data received from BPEL process in order to analyse them. Click on the ‘Next[Persist Event]’ button at the bottom.</span></li>
<li><span style="font-family: Arial; font-size: 14.6666666666667px; white-space: pre-wrap;">Select whatever data you need to persist from here and click save stream.</span> </li>
</ul>
<div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibU28rcH9-mPxhVoO05HC_l5WYle0KYX1pWpz9wOILeK1x4BHXZrRSExvgxlO3skY7U29LVL5xb7NjKpIgpH0tmQB8oU9UAB2j-2QTTOP7x5DGlJa0pg0lEZMpOjA1bWs50EvPpaRodAM/s1600/Screen+Shot+2015-07-14+at+9.46.38+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" height="386" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibU28rcH9-mPxhVoO05HC_l5WYle0KYX1pWpz9wOILeK1x4BHXZrRSExvgxlO3skY7U29LVL5xb7NjKpIgpH0tmQB8oU9UAB2j-2QTTOP7x5DGlJa0pg0lEZMpOjA1bWs50EvPpaRodAM/s640/Screen+Shot+2015-07-14+at+9.46.38+PM.png" width="640" /></a></div>
</div>
<div>
<ul>
<li><span style="font-family: Arial; font-size: 14.6666666666667px; white-space: pre-wrap;">We need to add a event receiver to populate the table we created, with data received from BPEL process. </span><span style="font-family: Arial; font-size: 14.6666666666667px; line-height: 1.38; white-space: pre-wrap;">Click on ‘Receivers’ under Manage tab. Click on ‘Add Event Receiver’. </span></li>
<li><span style="font-family: Arial; font-size: 14.6666666666667px; line-height: 1.38; white-space: pre-wrap;">Fill the form with following information.</span></li>
</ul>
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li style="font-family: Arial; font-size: 14.6666666666667px; list-style-type: lower-roman; vertical-align: baseline;"><span style="font-size: 14.6666666666667px; line-height: 1.38; white-space: pre-wrap;">Event Receiver Name : </span></li>
<li style="font-family: Arial; font-size: 14.6666666666667px; list-style-type: lower-roman; vertical-align: baseline;"><div style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="color: black; font-family: Arial; font-size: 14.6666666666667px; vertical-align: baseline; white-space: pre-wrap;">Adapter type : wso2event</span></div>
</li>
<li style="font-family: Arial; font-size: 14.6666666666667px; list-style-type: lower-roman; vertical-align: baseline;"><div style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="color: black; font-family: Arial; font-size: 14.6666666666667px; vertical-align: baseline; white-space: pre-wrap;">Event stream - org.wso2.bam.phone.retail.store.kpi:1.0.0</span></div>
</li>
<li style="font-family: Arial; font-size: 14.6666666666667px; list-style-type: lower-roman; vertical-align: baseline;"><div style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="color: black; font-family: Arial; font-size: 14.6666666666667px; vertical-align: baseline; white-space: pre-wrap;">Message format - wso2event</span></div>
</li>
</ol>
<div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUAKikZRACcegpVvoZqlLhZ6_2Tdf9ArMqWZMxeyohyphenhyphenvA1AGAXAxQjoKkFtlxX1a6Dbjb78POwJssn7nIJWmy7Qxtuphkfzr-suckpdiAPzLogOpCH0JMB2xi98DbikPWxB2yl26I8FUM/s1600/Screen+Shot+2015-07-14+at+9.47.03+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" height="352" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUAKikZRACcegpVvoZqlLhZ6_2Tdf9ArMqWZMxeyohyphenhyphenvA1AGAXAxQjoKkFtlxX1a6Dbjb78POwJssn7nIJWmy7Qxtuphkfzr-suckpdiAPzLogOpCH0JMB2xi98DbikPWxB2yl26I8FUM/s640/Screen+Shot+2015-07-14+at+9.47.03+PM.png" width="640" /></a></div>
</div>
<div>
<ul><span id="docs-internal-guid-1f9fefdc-8d68-1088-72f9-5e63dbc02baa">
<li><span style="font-family: Arial; font-size: 14.6666666666667px; white-space: pre-wrap;">Submit the form to create new event receiver from bps.</span></li>
<li><span style="font-family: Arial; font-size: 14.6666666666667px; white-space: pre-wrap;">Now we have setup the infrastructure to receive and analyse event information from BPS. Let’s create a dashboard to visualise the KPI data. </span><span style="font-family: Arial; font-size: 14.6666666666667px; line-height: 1.38; vertical-align: baseline; white-space: pre-wrap;">Create a new Dashboard in DAS as instructed in </span><a href="https://docs.wso2.com/display/DAS300/Adding+a+Dashboard" style="font-family: Arial; font-size: 14.6666666666667px; line-height: 1.38; text-decoration: none; white-space: pre-wrap;"><span style="color: #1155cc; font-size: 14.6666666666667px; text-decoration: underline; vertical-align: baseline;">Adding a Dashboard</span></a><span style="font-family: Arial; font-size: 14.6666666666667px; line-height: 1.38; vertical-align: baseline; white-space: pre-wrap;">.</span></li>
<li><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="line-height: 1.38; vertical-align: baseline;">Now follow the instructions in ‘Adding a gadget using the gadget generation wizard’ section in page </span><a href="https://docs.wso2.com/display/DAS300/Adding+Gadgets+to+a+Layout" style="line-height: 1.38; text-decoration: none;"><span style="color: #1155cc; text-decoration: underline; vertical-align: baseline;">Adding gadgets to a layout</span></a><span style="line-height: 1.38; vertical-align: baseline;">. Select ‘ORG_WSO2_BAM_PHONE_STORE_KPI’ as the datasource here. </span></span><span style="font-family: Arial; font-size: 14.6666666666667px; white-space: pre-wrap;">You can create different types of charts and use different data combinations here.</span></div>
</li>
</span></ul>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh109FLnqMfc1tcWvY4XHqircQuLHGEqFqxjO-qNwkwE2ihmNagY6yppHF5uF-GjqgEHPFCKnGIcWDVaW5itrRmGoGGyF7ebK7a-2vP1mHAwRjLDCq3-bKWWd9kTKPRyHbRi9icma79_N8/s1600/Screen+Shot+2015-07-14+at+9.47.15+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" height="154" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh109FLnqMfc1tcWvY4XHqircQuLHGEqFqxjO-qNwkwE2ihmNagY6yppHF5uF-GjqgEHPFCKnGIcWDVaW5itrRmGoGGyF7ebK7a-2vP1mHAwRjLDCq3-bKWWd9kTKPRyHbRi9icma79_N8/s640/Screen+Shot+2015-07-14+at+9.47.15+PM.png" width="640" /></a></div>
<div>
<ul><span id="docs-internal-guid-1f9fefdc-8d68-1088-72f9-5e63dbc02baa">
<li><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-family: Arial; font-size: 14.6666666666667px; white-space: pre-wrap;">Add the new gadget to your dashboard.</span></div>
</li>
</span></ul>
<span id="docs-internal-guid-1f9fefdc-8d68-1088-72f9-5e63dbc02baa"></span><br />
<div>
<span id="docs-internal-guid-1f9fefdc-8d68-1088-72f9-5e63dbc02baa"><span id="docs-internal-guid-1f9fefdc-8d8d-7668-2e8b-be60451a0d3e"></span><br />
</span> <br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span id="docs-internal-guid-1f9fefdc-8d68-1088-72f9-5e63dbc02baa"><span id="docs-internal-guid-1f9fefdc-8d8d-7668-2e8b-be60451a0d3e"><span style="font-family: Arial; font-size: 14.6666666666667px; vertical-align: baseline; white-space: pre-wrap;">Now you can visualise the event information using the Analytics Dashboard. Try sending more requests to the BPEL process and note the changes in charts. </span></span></span><br />
<div>
<span style="font-family: Arial; font-size: 14.6666666666667px; vertical-align: baseline; white-space: pre-wrap;"><br />
</span></div>
</div>
<span id="docs-internal-guid-1f9fefdc-8d68-1088-72f9-5e63dbc02baa"><span id="docs-internal-guid-1f9fefdc-8d8d-7668-2e8b-be60451a0d3e"></span></span><br />
<div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
VinodKhttp://www.blogger.com/profile/02960208450297288533noreply@blogger.com0tag:blogger.com,1999:blog-3890523993479372916.post-61145678587373241462015-06-18T11:32:00.000+05:302015-06-18T11:33:08.305+05:30WSO2 BPS : Skippable Human Tasks<div dir="ltr" style="text-align: left;" trbidi="on">
A human task can be skipped by a business admin of that task. In order to make a human task skippable you need to edit the corresponding BPEL process that invoke it. It is not a property of the Human Task.<br />
<br />
In order to invoke a human task in <a href="http://wso2.com/products/business-process-server/" target="_blank">WSO2 BPS</a>, we should include a people activity, such as shown in following snippet from a BPEL process definition.<br />
<br />
<script src="https://gist.github.com/vinok88/52174e436c3bff654ea4.js"></script><br />
<br />
Note that there is a attribute called 'isSkipable' inside peopleActivity element. This attribute is by default set to 'no' if the process is created using <a href="http://wso2.com/products/developer-studio/" target="_blank">WSO2 Dev Studio</a>. Changing it to yes will make the human tasks invoked by the particular process skippable.<br />
<br />
Cheers!</div>
VinodKhttp://www.blogger.com/profile/02960208450297288533noreply@blogger.com0tag:blogger.com,1999:blog-3890523993479372916.post-56821877870427479202015-06-02T17:35:00.001+05:302015-06-18T11:34:00.808+05:30WSO2 BPS : Working With Multiple User Stores in Human Tasks<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
<span style="font-family: Times, Times New Roman, serif;">In a human task you need to assign task's to users. In a multiple user store, there are multiple user domains. With the multiple user store support in <a href="http://wso2.com/" target="_blank">WSO2</a> carbon platform (WSO2's middleware platform), <a href="http://wso2.com/products/business-process-server/" target="_blank">WSO2 Business Process Server</a> allows to assign human tasks to users in different domains.</span></div>
<div style="text-align: justify;">
<span style="font-family: Times, Times New Roman, serif;"><br />
</span></div>
<span style="font-family: Times, Times New Roman, serif;">First we need to understand the basic user store concepts. Among the user stores, one of them is considered as the primary store and others are secondary stores.<span style="background-color: white; text-align: left;"><span style="color: #333333;"><span style="font-size: 15px; white-space: pre-wrap;"> </span></span></span></span>A user in a primary user store can be referred directly by it's user name.<span style="font-family: Times, Times New Roman, serif;"><span style="background-color: white; text-align: left;"><span style="color: #333333;"><span style="font-size: 15px; white-space: pre-wrap;"> </span></span></span></span>But users in secondary domains should be referred with the respective user domain in following format.<br />
<span style="font-family: Arial, Helvetica, sans-serif;"><domain name>/<username|rolename> </span><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="background-color: white; color: #333333; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: Times, Times New Roman, serif;"><br />
</span></span></div>
When you assign a task inside your humanTask package or Process archive to a domain user you should use the above format. domain names are case insensitive.<br />
<br />
Eg: Lets assume you have ‘ClerkUser’ in ‘abc.com’ domain and ‘ManagerUser’ in primary domain.<br />
So If you are assigning any task to these users they should be referred as follows,<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="font-family: Times, 'Times New Roman', serif; font-size: 15px; line-height: 1.38; text-align: center; white-space: pre-wrap;"> </span><span style="font-size: 15px; line-height: 1.38; text-align: center; white-space: pre-wrap;"><span style="font-family: Arial, Helvetica, sans-serif;">ClerkUser : abc.com/ClerkUser</span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="font-size: 15px; line-height: 1.38; white-space: pre-wrap;"><span style="font-family: Arial, Helvetica, sans-serif;"> ManagerUser : ManagerUser</span></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="font-size: 15px; line-height: 1.38; white-space: pre-wrap;"><span style="font-family: Arial, Helvetica, sans-serif;"><br />
</span></span></div>
Please note that these domain names are case insensitive. You can use any form inside your process package.<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: justify;">
<span style="font-size: 15px; line-height: 1.38; white-space: pre-wrap;"><span style="font-family: Times, Times New Roman, serif;">
</span></span></div>
That's all you need, to work with multiple user stores in WSO2 BPS.<br />
<br />
If you want to try this out, setup a new user store as explained in <a href="https://docs.wso2.com/display/IS500/Working+with+User+Stores">Working with User Stores</a>. Then deploy the ClaimsApprovalTaskWithMultipleDomains.zip human task package in the <BPS_HOME>/repository/samples/humantasks folder inside the <a href="http://wso2.com/products/business-process-server/">WSO2 BPS 3.5</a> release. Read the sample section of the <a href="https://docs.wso2.com/display/BPS350/Human+Task+Samples">documentation</a> for more info.<br />
<br />
Thank you.</div>
VinodKhttp://www.blogger.com/profile/02960208450297288533noreply@blogger.com0tag:blogger.com,1999:blog-3890523993479372916.post-73983243210082671102015-05-07T00:18:00.000+05:302015-06-02T17:35:40.372+05:30BPEL : Populating a Complex Element List<div dir="ltr" style="text-align: left;" trbidi="on">
<a href="http://ode.apache.org/" target="_blank">Apache ODE</a> has <b>insert-as.. </b>XPath extension functions to add elements to a list inside a business process.<br />
<br />
You can select the function based on where the new elements should be added. For an instance, <span style="font-family: Times, Times New Roman, serif;">insert-as-last-into()</span><span style="font-family: Georgia, Times New Roman, serif;"> </span>insert elements at the end of the list and <span style="font-family: Times, Times New Roman, serif;">insert-as-first-into()</span><span style="font-family: Georgia, Times New Roman, serif;"> </span>add elements to the front of the list.<br />
<br />
Following code snippets demonstrates the usage of the functions.<br />
<br />
<script src="https://gist.github.com/vinok88/0d345fae1d38e43a4c81.js"></script><br />
<br />
Let's assume that the variable <i><span style="font-family: Georgia, Times New Roman, serif;">input</span> </i>has multiple <span style="background-color: white;">parameter</span> <i>elements</i>. We need to add each element to a list called <i><span style="background-color: white;">elementList</span>. </i>Here the ode:insert-as-last-into() function is used.<br />
<br />
Insert function should be used inside a copy operation. The first argument is the variable that represents the list. Second one is the element that is going to be added. Finally the <span style="background-color: white;"><i>bpel:to</i></span> part of the copy operation should be again the list that we are inserting elements.<br />
<br />
This looks like a straight forward task. But when I use this for the first time, I ran into bunch of problems. So here are the tricks that you need to aware when using these functions.<br />
<br />
<b>1.</b> <span style="font-family: Times, Times New Roman, serif;">You need to use following xpath 2.0 related queryLanguage and expressionLanguage, </span><br />
<span style="font-family: Times, 'Times New Roman', serif;">queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0" </span><br />
expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath2.0"<br />
<div>
<br /></div>
<div>
<b>2.</b> You can only insert directly into a list. Not a list inside another parent element.<br />
For an instance, you can't directly insert into a list that is inside a message part. It will result in selection failures. You need to define a local list variable, populate that local list and copy the whole list later.<br />
<br /></div>
<div>
Hope this is all you need.</div>
<div>
<br /></div>
<div>
I have tested this with the <a href="http://wso2.com/products/business-process-server/" target="_blank">WSO2 BPS Server. </a>Leave a comment if you have any queries.</div>
<div>
<br /></div>
<div>
Cheers! </div>
<div>
</div>
</div>
VinodKhttp://www.blogger.com/profile/02960208450297288533noreply@blogger.com1