<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Graversen &#187; pi71</title>
	<atom:link href="http://graversen.org/category/pi71/feed/" rel="self" type="application/rss+xml" />
	<link>http://graversen.org</link>
	<description>Daniels comments</description>
	<lastBuildDate>Fri, 20 Jan 2012 13:31:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>#SAPPHIRE youtube challenge: Meet the right people for you</title>
		<link>http://graversen.org/2011/05/12/sapphire-youtube-challenge-meet-the-right-people-for-you/</link>
		<comments>http://graversen.org/2011/05/12/sapphire-youtube-challenge-meet-the-right-people-for-you/#comments</comments>
		<pubDate>Thu, 12 May 2011 20:47:53 +0000</pubDate>
		<dc:creator>daniel</dc:creator>
				<category><![CDATA[Company]]></category>
		<category><![CDATA[pi]]></category>
		<category><![CDATA[pi71]]></category>
		<category><![CDATA[sap]]></category>
		<category><![CDATA[sap pi]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[youtube]]></category>

		<guid isPermaLink="false">http://graversen.org/2011/05/12/sapphire-youtube-challenge-meet-the-right-people-for-you/</guid>
		<description><![CDATA[I&#8217;m leaving from home in a few hours for SAPPHIRE, and really looking forward to meet all the really cool people there. But you mostly meet people at random, some will help get your objectives. But you have to be lucky. So I thought that it could be interesting to see how was at the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m leaving from home in a few hours for <a href="http://redirectingat.com?id=10371X688478&xs=1&url=http%3A%2F%2Fwww.sapandasug.com%2F&sref=rss">SAPPHIRE</a>, and really looking forward to meet all the really cool people there. But you mostly meet people at random, some will help get your objectives. But you have to be lucky.
</p>
<p>So I thought that it could be interesting to see how was at the event that could make a difference. The ideal people for me to meet would be people working with SAP Process Integration (PI). It is difficult to find them and you have to meet a lot of people, which is nice though.
</p>
<p>I decided to make a video saying how I wanted to meet. It would though probably be nicer if other people did the same. So if you are up for the challenge. Create a youtube video about how you want to meet. The format can be whatever you can make. If it is with your mobile phone it is also great.
</p>
<p>Just make a video reply to my movie and tag the video with #sapphire and #sapphiremeet.
</p>
<p>Hire is my video.
</p>
<p>
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/fBpLTAxaCKg?hl=da&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/fBpLTAxaCKg?hl=da&#038;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object><br />
 </p>

<div class="skimlinks-disclosure-button"><p><script class="skimlinks_ref_script" type="text/javascript" src="http://static.skimlinks.com/api/ref.js?p=10371&amp;d=688478&amp;t=1"></script></p></div>
]]></content:encoded>
			<wfw:commentRss>http://graversen.org/2011/05/12/sapphire-youtube-challenge-meet-the-right-people-for-you/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SAP PI XML Mappings using groovy</title>
		<link>http://graversen.org/2009/07/03/sap-pi-xml-mappings-using-groovy/</link>
		<comments>http://graversen.org/2009/07/03/sap-pi-xml-mappings-using-groovy/#comments</comments>
		<pubDate>Fri, 03 Jul 2009 11:50:42 +0000</pubDate>
		<dc:creator>daniel</dc:creator>
				<category><![CDATA[pi]]></category>
		<category><![CDATA[pi71]]></category>
		<category><![CDATA[groovy]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[process integration]]></category>
		<category><![CDATA[sap]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[transformation]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://graversen.org/2009/07/03/sap-pi-xml-mappings-using-groovy/</guid>
		<description><![CDATA[Using Groovy as java mappings for transformation of XML documents in the SAP PI or XI. ]]></description>
			<content:encoded><![CDATA[<p>Creating XML mapping in Java have for me always been difficult, it has been possible but I would prefer other tools. I was looking at scripting languages like Ruby/JRuby or Groovy for creating some web apps. Those languages seem quite hot right now. On the <a href="http://redirectingat.com?id=10371X688478&xs=1&url=http%3A%2F%2Fwiki.sdn.sap.com%2Fwiki%2Fdisplay%2Fevents%2FComposition%2Bon%2BGrails%2B-%2BComposition%2BEvolved&sref=rss">SCN Wiki</a> a group has implemented the Grails (groovy on Rails) on the Netweaver system, as Composition on Grails. With this tool it is possible to applications with a Webdynpro look and feel.  Grails is a framework for creating webapps with less coding.</p>
<p><a href="http://redirectingat.com?id=10371X688478&xs=1&url=http%3A%2F%2Fgroovy.codehaus.org%2FGetting%2BStarted%2BGuide&sref=rss">Groovy</a> is a scripting language designed on the basis of Java. Groovy script is compiled into Java classes, and both Java and Groovy can be mixed. This makes the implementation easier, just start writing Java and when you feel like use some of the smarter features of Groovy you can use them.</p>
<p>While I was looking at Grails, I thought that I would be possible to use it in PI. One place could be in java mappings. I&#8217;ll describe the steps that I have taken to implement this.</p>
<ol>
<li><a href="http://redirectingat.com?id=10371X688478&xs=1&url=http%3A%2F%2Fgroovy.codehaus.org%2FDownload&sref=rss">Download</a> and install the groovy library</li>
<li>Get the <a href="http://redirectingat.com?id=10371X688478&xs=1&url=http%3A%2F%2Fgroovy.codehaus.org%2FEclipse%2BPlugin&sref=rss">Groovy plugin</a> to Eclipse, this make developing much easier.</li>
<li>Create a new Eclipse project</li>
<li>Insert the aii_map_api.jar in the project, to be able to implement Streamtransformation service.</li>
<li>Create a new Groovy file in the source folder, with the name GroovyMapIdoc.groovy, then Eclipse know that it is a groovy file.</li>
<li>Create the mapping of your file. I have attached my example code bellow.</li>
<li>Compile the Groovy files using the context menu on the GroovyMapIdoc.groovy file.</li>
<li>Zip the content of the bin-groovy in the project folder and upload it, as an imported archive in the Integration builder. Alternative use <a href="http://redirectingat.com?id=10371X688478&xs=1&url=https%3A%2F%2Fwww.sdn.sap.com%2Firj%2Fscn%2Fweblogs%3Fblog%3D%2Fpub%2Fwlg%2F5341&sref=rss">ant build</a> to create the zip files.</li>
<li>Upload the two files Groovy-1.6.1.jar and asm-2.2.3.jar as imported archives. They can be found in &lt;GROOVY_HOME&gt;\lib</li>
<li>Activate and use the mapping.</li>
</ol>
<p>I would expect people trying this to have a good knowledge of using XI or PI Java mappings, because it is a requirement for the development of mappings.</p>
<p>One example I always have considered, was my first challenging mapping experience. Posting financial post with more than 1000 lines to the FIDCCP02 idoc. The FIDCCP02 only accepts 999 lines. The posting can be created multiply idocs with 998 lines and the post a balance on each item. This way all documents will balance.</p>
<p>The document is transformed from the left document to the right. I have for this example used a max size of 3 to make testing easier.</p>
<p><img src="http://graversen.org/wp-content/070309_1150_SAPPIXMLMap1.png" alt="" height="265" /><img src="http://graversen.org/wp-content/070309_1150_SAPPIXMLMap2.png" alt="" height="265" /></p>
<p>The code that I have used for the mapping is.</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">package com.figaf.mapping<br />
<br />
import com.sap.aii.mapping.api.StreamTransformation;<br />
import java.io.InputStream;<br />
import java.io.OutputStream;<br />
import java.util.Map;<br />
<br />
import groovy.xml.MarkupBuilder<br />
<br />
class GroovyMapIdoc implements StreamTransformation{<br />
<br />
&nbsp; &nbsp;Map param;<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; void setParameter(Map param) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; this.param = param;<br />
&nbsp; &nbsp; }<br />
&nbsp; &nbsp; // Number of lines pr idoc<br />
&nbsp; &nbsp; def step=3 <br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; /**<br />
&nbsp; &nbsp; &nbsp;* Implementation of the execution method<br />
&nbsp; &nbsp; &nbsp;*/<br />
&nbsp; &nbsp; void execute(InputStream input, OutputStream out) {<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; // Parse the input using the XMLSlurper<br />
&nbsp; &nbsp; &nbsp; &nbsp; def FICCP01 = new XmlSlurper().parse(input)<br />
&nbsp; &nbsp; &nbsp; &nbsp; // get the different lines using the GPath<br />
&nbsp; &nbsp; &nbsp; &nbsp; def Lines = FICCP01.IDOC.LINE<br />
&nbsp; &nbsp; &nbsp; &nbsp; // create a writer example <br />
&nbsp; &nbsp; &nbsp; &nbsp; def writer = new OutputStreamWriter(out)<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; def xml = new MarkupBuilder(writer)<br />
&nbsp; &nbsp; &nbsp; &nbsp; // create the root element and fill data into it. <br />
&nbsp; &nbsp; &nbsp; &nbsp; xml.FICCP01(){<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // get the number of idocs to be created. <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; def numIdocs = &nbsp; Lines.size()/step + (Lines.size()%step&gt;0?1:0) &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // loop for each idoc<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for ( i in 0..numIdocs-1 ) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // find the limit for the current idoc<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; def max = Math.min( Lines.size(), i* step+2)<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // create sum ellement to create balances<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; def sum = 0.0;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;def lineno=1;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; IDOC(){<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // create the number segment, using GPATH<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; NR(FICCP01.IDOC.NR )<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // for each line in the range do the following<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Lines[i*step..max].each{oldline-&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// create a &nbsp;new Line node, in the out put element<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// with the following content<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LINE(){<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; NO(lineno++)<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Text(oldline.Text.text())<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Amount(oldline.Amount.toBigDecimal())<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// update the sum<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sum +=oldline.Amount.toBigDecimal()<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // create a balancing line, with balances the result<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LINE(){<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; NO(step+1)<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Text('Balance')<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Amount(-sum)<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; // write the xml to output<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;writer.flush()<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;writer.close()<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; }<br />
&nbsp; &nbsp; <br />
}</div></div>
<p>Behind the scenes the Groovy file is changed in to java classes. Because Java does not support Closures natively different subclasses are created. Try to have a look on them using a decompiler like <a href="http://redirectingat.com?id=10371X688478&xs=1&url=http%3A%2F%2Fwww.varaneckas.com%2Fjad&sref=rss">jad</a>.</p>
<p><strong>Conclusion</strong></p>
<p>Groovy could be a way to improve the how java mappings are created. The XML generation is easier to handle then how it would have been created in Java and it is more powerful than XSLT. It takes some effort to get use to the closures concept of Groovy and the other notation, but it seems to work real well.</p>
<p>I don&#8217;t think the performance issue with the mapping is a problem. There is an overhead to load the groovy libraries and the code is probably not as optimized if it was written directly in java. I have not made any measurements for this.</p>

<div class="skimlinks-disclosure-button"><p><script class="skimlinks_ref_script" type="text/javascript" src="http://static.skimlinks.com/api/ref.js?p=10371&amp;d=688478&amp;t=1"></script></p></div>
]]></content:encoded>
			<wfw:commentRss>http://graversen.org/2009/07/03/sap-pi-xml-mappings-using-groovy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Use proxy to inspect http/soap requests</title>
		<link>http://graversen.org/2008/04/14/use-proxy-to-inspect-httpsoap-requests/</link>
		<comments>http://graversen.org/2008/04/14/use-proxy-to-inspect-httpsoap-requests/#comments</comments>
		<pubDate>Mon, 14 Apr 2008 13:20:56 +0000</pubDate>
		<dc:creator>daniel</dc:creator>
				<category><![CDATA[http]]></category>
		<category><![CDATA[pi]]></category>
		<category><![CDATA[pi71]]></category>

		<guid isPermaLink="false">http://graversen.org/2008/04/14/use-proxy-to-inspect-httpsoap-requests/</guid>
		<description><![CDATA[I have developed some PI webservice scenarios, that I needed to test. When I test webservice I use .NET WebService Studio, which I&#8217;m unable to find anymore. It is a small free application that can use a WSDL to create and interface to test the application. When I tested this interface, I got the following [...]]]></description>
			<content:encoded><![CDATA[<p>I have developed some PI webservice scenarios, that I needed to test. When I test webservice I use .NET WebService Studio, which I&#8217;m unable to find anymore.  It is a small free application that can use a WSDL to create and interface to test the application.</p>
<p>When I tested this interface, I got the following error: <strong>System.Net.WebException: The underlying connection was closed: The connection was closed unexpectedly. </strong>It took a while to trace what the error was, because the processing looked fine at the PI system.</p>
<p>To trace the problem I deceived to place a proxy in between the .NET application and the PI SOAP adapter. I had earlier used <a href="http://redirectingat.com?id=10371X688478&xs=1&url=http%3A%2F%2Fwww.owasp.org%2Findex.php%2FOWASP_WebScarab_NG_Project&sref=rss">Webscrab</a> as a proxy to see how the used HTTP request looked and change some parameters. The new version of Webscrab is a Java Webstart application so it is much easier to get started with.</p>
<p>When the application is started, the user is requested to select a database to store the requests in. I normally use blank password, since the requests is just private.</p>
<p>The application looks like the following.</p>
<p><img src="http://graversen.org/wp-content/041408-1320-useproxytoi11.png" /></p>
<p>It is possible to change the port, for where the proxy listens in the menu Plugin-&gt;Proxy-&gt;Proxy Listeners. Default is 8008.</p>
<p><img src="http://graversen.org/wp-content/041408-1320-useproxytoi21.png" /></p>
<p>In the .NET application the proxy have to be changed to http://localhost:8008 and it should then be possible to see the incoming requests in the log.</p>
<p>When I placed this proxy between the two applications, I got the response that I expected and the .NET application also received the correct data.</p>
<p>If you need to change some requests, it is also possible. From the Plugin -&gt; Intercept Requests and POST. <img src="http://graversen.org/wp-content/041408-1320-useproxytoi31.png" /></p>
<p>Then for each new request you should get a popup, where it is possible to change the HTTP request before it is sent to the server.</p>

<div class="skimlinks-disclosure-button"><p><script class="skimlinks_ref_script" type="text/javascript" src="http://static.skimlinks.com/api/ref.js?p=10371&amp;d=688478&amp;t=1"></script></p></div>
]]></content:encoded>
			<wfw:commentRss>http://graversen.org/2008/04/14/use-proxy-to-inspect-httpsoap-requests/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Modeling tools in PI 7.1</title>
		<link>http://graversen.org/2008/04/07/modeling-tools-in-pi-71/</link>
		<comments>http://graversen.org/2008/04/07/modeling-tools-in-pi-71/#comments</comments>
		<pubDate>Mon, 07 Apr 2008 09:20:30 +0000</pubDate>
		<dc:creator>daniel</dc:creator>
				<category><![CDATA[modeling]]></category>
		<category><![CDATA[pi71]]></category>

		<guid isPermaLink="false">http://graversen.org/2008/04/07/modeling-tools-in-pi-71/</guid>
		<description><![CDATA[With PI 7.1 it is possible to create Aris Models within the Enterprise Service Builder. This will make it easier for the integration team to model the process and interfaces.It is possible to go from the high level business process models, all the way down to an interface implementation and configuration of integration scenarios. The [...]]]></description>
			<content:encoded><![CDATA[<p>With PI 7.1 it is possible to create Aris Models within the Enterprise Service Builder. This will make it easier for the integration team to model the process and interfaces.It is possible to go from the high level business process models, all the way down to an interface implementation and configuration of integration scenarios. The use of models adds an extra layer of documentation of the business processes in conjunction with the Enterprise Services (ES). The models can be used to get an overview of how a scenario is created.</p>
<p>This paper will contain information about which models can be used in PI 7.1 and which meaning they will have for a PI developer.</p>
<p>The Sales Order model is based on the ES for sales orders.  But the modeled system contains more information than it is possible to find on ES workplace. What is added to the models in the ESR is how the services can be connected in a specific scenario.</p>
<p>At first look at the models there are a lot of different models. It takes a little while to get used to the models, and figure out which models can be used for which purpose. There are 12 different model types, and all of them can be used for describing a business process in different ways and levels.</p>
<p>At the highest level different integration scenarios are grouped together. An example of this is the SAP Scenario Catalog, which is a grouping of different scenarios. This model makes it easier to understand how different scenarios belong together and to find the scenarios that have something in common.</p>
<p>An example of the scenario catalog is the following.</p>
<p><img src="http://graversen.org/wp-content/040708-0919-modelingtoo1.png" /></p>
<p>An Integration Scenario is a high level overview of what Deployment Units are used. In each Deployment Unit there is one or more Process Components which can contain a number of process steps. The connection between the Deployment Units can be linked to information about the integration scenarios.</p>
<p><img src="http://graversen.org/wp-content/040708-0919-modelingtoo2.png" /></p>
<p>The interaction between the Process Components can be described in a ProComp Interaction Model.</p>
<p>A ProComp Interaction model shows how different Process Components relate to each other, for instance the message flow between Process Components. An example of this is showed below.</p>
<p><img src="http://graversen.org/wp-content/040708-0919-modelingtoo3.png" /></p>
<p>The ProComp Interaction model can contain information about what Service Interfaces are used and the mappings they contain. This information can be used to configure an Integration Scenario by adding information about business systems and where the different process components are installed &#8211; and by selecting adapters. Then it works just the same way as an Integration Scenario in PI 7.0.</p>
<p><img src="http://graversen.org/wp-content/040708-0919-modelingtoo4.png" /></p>
<p>The ProComp model can also be used to describe how the flow is within a Process Component.  This type of model seems to be more useful if the aim is to document how Enterprise Services are connected within a Process Component.  An example of what the ProComp model could be used for: To describe what is going on in a BPM (Integration Process in PI) which can then later be created based on the model.</p>
<p>It is still possible to make use of integration scenarios from XI 3.0/PI 7.0. These scenarios do not explain the business in the same detail as some of the other model types. They do, however, provide information about which connections are used and how the messages are mapped. The integration scenarios are easier to understand for a PI developer since they give information about which connections are used in a direct fashion and because they have been used earlier versions of XI/PI.</p>
<p>It takes a little while to get used to working with the models in PI 7.1 and to create models which can be used and understood by developers and Business Process eXperts ( on SDN SAP has a BPX community).</p>
<p>The use of models does seem to create some extra overhead compared to a top-down approach which starts with an Integration Scenario and the objects are created to fit into the process. To be able to make such a scenario one would normally create a drawing to describe what is going on and to support development of the scenarios. This drawing is often a process diagram, for instance in Visio, PowerPoint or on paper. With help of the built-in model tools it is now possible to store such models within the ES Builder, thus serving the purpose of documenting the process and context to which the interface belongs.</p>
<p>I recommend to invest time in establishing naming conventions for modeling and guidelines for when and how modeling should be used.</p>
<p>A question which has to be answered is if models should be created for all integration scenarios &#8211; or only when Enterprise Services are involved? I probably need to use modeling in real projects and then evaluate if the use of modeling makes sense.</p>

<div class="skimlinks-disclosure-button"><p><script class="skimlinks_ref_script" type="text/javascript" src="http://static.skimlinks.com/api/ref.js?p=10371&amp;d=688478&amp;t=1"></script></p></div>
]]></content:encoded>
			<wfw:commentRss>http://graversen.org/2008/04/07/modeling-tools-in-pi-71/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Publishing services in PI 7.1</title>
		<link>http://graversen.org/2008/02/27/publishing-services-in-pi-71/</link>
		<comments>http://graversen.org/2008/02/27/publishing-services-in-pi-71/#comments</comments>
		<pubDate>Wed, 27 Feb 2008 20:01:41 +0000</pubDate>
		<dc:creator>daniel</dc:creator>
				<category><![CDATA[pi71]]></category>

		<guid isPermaLink="false">http://graversen.org/2008/02/27/publishing-services-in-pi-71/</guid>
		<description><![CDATA[With PI 7.1 is it possible to publish services to the Service Registry (SR) directly from the Enterprise Service (ES) Builder and Integration Directory. The publishing functionality will allow developers and Business Process Experts (BPXs) to publish the services interfaces to the SR or UDDI. The UDDI will then contain a global list of all [...]]]></description>
			<content:encoded><![CDATA[<p>With PI 7.1 is it possible to publish services to the Service Registry (SR) directly from the Enterprise Service (ES) Builder and Integration Directory. The publishing functionality will allow developers and Business Process Experts (BPXs) to publish the services interfaces to the SR or UDDI. The UDDI will then contain a global list of all the services, which is implemented or at some point will be implemented.</p>
<p>To show the different ways to define services, it is necessary to see how they can be published.  Services can be provided the following ways.</p>
<ul>
<li><strong>Brokered Service implemented in own system</strong>. A service provided by your company is exposed as a web service in your PI system (a brokered service) and the endpoint is made available via the SR.</li>
<li><strong>Brokered service to be implemented in partner system</strong>. A new interface must be developed. It will be implemented as a web service provided by a partner system. You want to offer this service in your own SR. You define the interface in your ES Builder and create a WSDL which the partner will use to develop and implement the service. When the service is deployed the endpoint can be posted in your SR.</li>
<li><strong>Web service provided by 3<sup>rd</sup> party</strong>. Someone has developed a webservice. The WSDL and endpoint can be published in your SR thus making the service available to users (developers) of your SR.</li>
</ul>
<p>How can the ES Builder and SR be used to support the three different options ? This will be described in the sections below.</p>
<h2>1 Brokered Service implemented in own system</h2>
<p>In PI 7.0 the only way to expose brokered services was to generate a WSDL and in the process enter a lot of information regarding the URL and service information. The WSDL file could then be saved as a file and mailed to the developers who wanted to use the service. If the file should be exposed via an UDDI the WSDL had to be placed on an HTTP server and then published.</p>
<p>This process has improved a lot with PI 7.1. Publishing of web services to the SR can now be performed with a few mouse clicks.</p>
<p>The Service Interface is defined the normal way as an outbound interface.</p>
<p><img src="http://graversen.org/wp-content/022708-1954-publishings1.png" /></p>
<p>To configure the outbound service a Sender Agreement and a SOAP communication channel will have to be created. The Sender Agreement should then be configured to the communication channel.</p>
<p><img src="http://graversen.org/wp-content/022708-1954-publishings2.png" /></p>
<p>To publish the service select Publish in SR from the menu.</p>
<p><img src="http://graversen.org/wp-content/022708-1954-publishings3.png" /></p>
<p>It is possible to change the URLs to fit with external naming conventions.</p>
<p><img src="http://graversen.org/wp-content/022708-1954-publishings4.png" /></p>
<p>When I tried to publish the service I got an error. It was like something is missing to complete the publication. The Service has been published in the SR but without an endpoint. Either it is a configuration we are missing or a bug that hopefully will be corrected in next service pack.</p>
<p>The service is published in the SR with the following information.</p>
<p><img src="http://graversen.org/wp-content/022708-1954-publishings5.png" /></p>
<h2>2 Brokered service to be implemented in partner system</h2>
<p>You and a partner agree on a new interface where you need to call a service to be implemented in the partner&#8217;s system. The interface is first designed in your PI system. A proxy can be implemented with the help of SPROXY (ABAP) or you can generate a Java proxy interface. This works on SAP systems, but it does not work as seamless with non-SAP products. To share the interfaces in PI 7.0 the PI developer had to export the WSDL files and mail them to the partner.</p>
<p>This is a lot easier with PI 7.1. In an inbound interface there is a publish button on the WSDL tab. This will allow for direct publishing to the Service Registry.</p>
<p><img src="http://graversen.org/wp-content/022708-1954-publishings6.png" /></p>
<p>And what is really nice is the WSDL is also published in a way, which will allow developers to get access to it, directly or from the UDDI.</p>
<p><img src="http://graversen.org/wp-content/022708-1954-publishings7.png" /></p>
<p>When the developers have completed the service, they can publish the service in the SR with an endpoint. What seems to be missing is a way to configure the PI communication channels to retrieve the endpoint information from SR. This would be a nice feature, which would make it possible to be able to change the endpoint without having to change the communication channel.</p>
<h2>3 Web service provided by 3<sup>rd</sup> party</h2>
<p>A WSDL of a 3<sup>rd</sup> party web service can be published in your SR from the Publish page. Your developers can then browse through delivered WSDLs in the SR and make use of (implementing calls to) the services.</p>
<p>Publishing can happen quite fast by entering the URL for the WSDL and then selecting Publish.</p>
<p><img src="http://graversen.org/wp-content/022708-1954-publishings8.png" /></p>
<p>If one of the services has to be consumed by a PI scenario, there is missing a link from the SR to the ES Builder. It is not possible to import a WSDL directly from the SR or with the URL. The WSDL and XSD must be saved as files and then imported using the mass import tool.</p>
<p>The process for importing multiple WSDLs into external definitions in ESR is as follows. First select where the external definitions should be stored.</p>
<p><img src="http://graversen.org/wp-content/022708-1954-publishings9.png" /></p>
<p>Then select the files to import.</p>
<p><img src="http://graversen.org/wp-content/022708-1954-publishings10.png" /></p>
<p>Then confirm the type</p>
<p><img src="http://graversen.org/wp-content/022708-1954-publishings11.png" /></p>
<p>After verifying the types and links, the schemas are imported as external definitions. After importing the WSDL, links between the different components are still valid. I do not know if this also works if there is HTTP links to the WSDLs.</p>
<p><img src="http://graversen.org/wp-content/022708-1954-publishings12.png" /></p>
<h2>Conclusion</h2>
<p>With the new version of PI 7.1 the publishing functionality is increased a lot, to make it easier for developers to share their work. The functionality does make it easy to publish services and therefore it will be something there is more likely to be used.  The only feature that seems to be missing is a way to import WSDLs directly from a HTTP host or from the SR.</p>

<div class="skimlinks-disclosure-button"><p><script class="skimlinks_ref_script" type="text/javascript" src="http://static.skimlinks.com/api/ref.js?p=10371&amp;d=688478&amp;t=1"></script></p></div>
]]></content:encoded>
			<wfw:commentRss>http://graversen.org/2008/02/27/publishing-services-in-pi-71/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

