<?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>BPM-Guide.de &#187; SOA</title>
	<atom:link href="http://www.bpm-guide.de/tag/soa/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bpm-guide.de</link>
	<description>It's Business Process Management</description>
	<lastBuildDate>Tue, 24 Jan 2012 19:53:48 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>How to call a Webservice from BPMN</title>
		<link>http://www.bpm-guide.de/2010/12/09/how-to-call-a-webservice-from-bpmn/</link>
		<comments>http://www.bpm-guide.de/2010/12/09/how-to-call-a-webservice-from-bpmn/#comments</comments>
		<pubDate>Thu, 09 Dec 2010 15:03:57 +0000</pubDate>
		<dc:creator>Bernd Rücker</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Activiti]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[Webservices]]></category>

		<guid isPermaLink="false">http://www.bpm-guide.de/?p=2024</guid>
		<description><![CDATA[We have recently been asked by quite a couple of customers, how to interact with Webservices from within a BPMN process (in Activiti) best. And &#8211; as always &#8211; there are multiple answers to that question Today I want to write a more technical post (haven&#8217;t done that for too long already) looking at the [...]]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_2053" class="wp-caption alignleft" style="width: 123px"><a href="http://www.bpm-guide.de/wp-content/uploads/2010/12/BPMN-Service-Task.png"><img src="http://www.bpm-guide.de/wp-content/uploads/2010/12/BPMN-Service-Task.png" alt=" " title=" " width="113" height="93" class="size-full wp-image-2053" /></a><p class="wp-caption-text"> </p></div><br />
We have recently been asked by quite a couple of customers, how to interact with Webservices from within a BPMN process (in Activiti) best. And &#8211; as always &#8211; there are multiple answers to that question <img src='http://www.bpm-guide.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Today I want to write a more technical post (haven&#8217;t done that for too long already) looking at the various options: The (verbose) BPMN 2.0 standard way, the (neat but Java specific) Activiti-Java -Extension and the (heavy) SOA/ESB alternative. And as always there are several nuances in between. To tell you that in advance: I am neither a big fan of the verbose standard nor of the heavy ESB way <img src='http://www.bpm-guide.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  But let&#8217;s have a look into that in more detail and what it means for your architecture.<br />
<span id="more-2024"></span><br />
<div id="attachment_2044" class="wp-caption alignright" style="width: 160px"><a href="http://www.bpm-guide.de/wp-content/uploads/2010/12/ws-process.png"><img src="http://www.bpm-guide.de/wp-content/uploads/2010/12/ws-process-150x43.png" alt="An easy process calling a Webservice" title="An easy process calling a Webservice" width="150" height="43" class="size-thumbnail wp-image-2044" /></a><p class="wp-caption-text">An easy process calling a Webservice</p></div> Okay, the idea is simple: In a process we want to call a Webservice. Maybe we &#8220;just&#8221; want to orchestrate Webservices using BPMN or maybe we have bigger business processes having to call a Webservice from time to time. BPMN as a standard isn&#8217;t tied to Webservices, but recommends to use them to be standard compliant. Okay, sounds good, so let&#8217;s do it the standard way. Luckily Activiti already can do that, even if it is not completely stable and therefor not officially released yet. I use a process contained as test case in Activiti, calling a very simple WS. The process is very simple as well, you can see it on the right (we will use that process for all the further examples). Here you see the BPMN 2.0 XML:</p>
<pre>
&lt;definitions&gt;
...
  &lt;import importType=&quot;http://schemas.xmlsoap.org/wsdl/&quot;
          location=&quot;http://localhost:63081/counter?wsdl&quot;
          namespace=&quot;http://webservice.activiti.org/&quot; /&gt;

  &lt;process id=&quot;asyncWebServiceInvocationWithDataFlowUEL&quot;&gt;
	  &lt;!--
		  The Data Inputs and Outputs of a Process have to be explicitly
		  declared with their type to be valid BPMN 2.0
	  --&gt;
  	&lt;ioSpecification&gt;
  		&lt;dataInput id=&quot;dataInputOfProcess&quot; itemSubjectRef=&quot;tns:setToRequestItem&quot; /&gt;
  		&lt;inputSet&gt;
  			&lt;dataInputRefs&gt;dataInputOfProcess&lt;/dataInputRefs&gt;
  		&lt;/inputSet&gt;
        &lt;outputSet /&gt;
  	&lt;/ioSpecification&gt;
    ...
    &lt;serviceTask id=&quot;webService&quot;
                 name=&quot;Call WS&quot;
                 implementation=&quot;##WebService&quot;
                 operationRef=&quot;tns:setToOperation&quot;&gt;
            &lt;!-- The BPMN 2.0 Meta Model requires an Input/Output Specification --&gt;
            &lt;ioSpecification&gt;
                &lt;dataInput itemSubjectRef=&quot;tns:setToRequestItem&quot; id=&quot;dataInputOfServiceTask&quot; /&gt;
                &lt;inputSet&gt;
                    &lt;dataInputRefs&gt;dataInputOfServiceTask&lt;/dataInputRefs&gt;
                &lt;/inputSet&gt;
                &lt;outputSet /&gt;
            &lt;/ioSpecification&gt;
            &lt;dataInputAssociation&gt;
                &lt;sourceRef&gt;dataInputOfProcess&lt;/sourceRef&gt;
                &lt;targetRef&gt;dataInputOfServiceTask&lt;/targetRef&gt;
   				&lt;assignment&gt;
   					&lt;from&gt;${dataInputOfProcess.newCounterValue}&lt;/from&gt;
   					&lt;to&gt;${dataInputOfServiceTask.value}&lt;/to&gt;
   				&lt;/assignment&gt;
            &lt;/dataInputAssociation&gt;
    &lt;/serviceTask&gt;
    ...
  &lt;/process&gt;
  &lt;!-- Interface: implementationRef = QName of WSDL Port Type --&gt;
  &lt;interface name=&quot;Counter Interface&quot; implementationRef=&quot;counter:Counter&quot;&gt;
    &lt;!-- Operation: implementationRef = QName of WSDL Operation --&gt;
    &lt;operation id=&quot;setToOperation&quot; name=&quot;setTo Operation&quot; implementationRef=&quot;counter:setTo&quot;&gt;
      &lt;inMessageRef&gt;tns:setToRequestMessage&lt;/inMessageRef&gt;
    &lt;/operation&gt;
  &lt;/interface&gt;
  &lt;message id=&quot;setToRequestMessage&quot; itemRef=&quot;tns:setToRequestItem&quot; /&gt;
  &lt;itemDefinition id=&quot;setToRequestItem&quot; structureRef=&quot;counter:setTo&quot; /&gt;&lt;!-- QName of input element --&gt;
&lt;/definitions&gt;
</pre>
<p>I don&#8217;t want to explain the BPN 2.0 XML in detail here, actually I could recommend a <a href="http://www.hanser.de/buch.asp?isbn=978-3-446-42455-5">good book</a> on it <img src='http://www.bpm-guide.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>As you can see the XML is pretty verbose. But sure, there is a good reason for that: There are a lot of indirections to define the data, the data input and output mappings, the interface of the service in a technology neutral way and so on. So there is a reason, but without good graphical tooling, it is hard to handle.</p>
<p><strong>Java-Alternative</strong></p>
<p>So the next thought is: Hey, we are Java developers, why not do it much easier in a Java way? We could leverage <a href="http://cxf.apache.org/">Apache CXF</a> (like the Activiti Webservice implementation does internally as well) and hook it into our BPMN process by an Activiti extension. Wait: An Activiti extension? That doesn&#8217;t sound standard compliant. Right, it is not. But actually look what you get out of it, this is the same process calling the Webservice directly:</p>
<pre>
&lt;definitions&gt;
  &lt;process name=&quot;SimpleWS&quot; id=&quot;SimpleWS&quot;&gt;
    ...
    &lt;serviceTask id=&quot;Call_WS&quot; name=&quot;Call WS&quot; activiti:class=&quot;com.camunda.training.delegate.WsDelegate&quot; &gt;
      &lt;extensionElements&gt;
        &lt;activiti:field name=&quot;wsdl&quot; expression=&quot;http://localhost:18080/VacationService?wsdl&quot; /&gt;
        &lt;activiti:field name=&quot;operation&quot; expression=&quot;saveVacationApproval&quot; /&gt;
        &lt;activiti:field name=&quot;parameters&quot; expression=&quot;${user}, ${days}&quot; /&gt;
        &lt;activiti:field name=&quot;returnValue&quot; expression=&quot;myReturn&quot; /&gt;
      &lt;/extensionElements&gt;
    &lt;/serviceTask&gt;
    ...
  &lt;/process&gt;
&lt;/definitions&gt;
</pre>
<p>Isn&#8217;t that a huge difference? Okay, the downside is, that this isn&#8217;t standard compatible any more. But actually I have never seen somebody really exchanging the process engine without any effort. I haven&#8217;t even seen that with Databases or Application servers often (and these are stone age technologies compared to BPMN), so I don&#8217;t think that this is such a huge disadvantage. But that differs in every project&#8230;</p>
<p>Now, in order to get the above process to work we need a so called JavaDelegate (a small Java class we can attach to the BPMN process, which is executed when the process instance runs through the service task). This just takes the parameters I configured and calls the Webservice. Agreed, the parameter gathering is a bit hacky and not powerful enough yet, but hey, it is a 15 minutes prototype. And it was really only 15 minutes with all components. Here you can see the code of that piece of Java Code:</p>
<pre>
public class WsDelegate implements org.activiti.engine.delegate.JavaDelegate {
  private Expression wsdl;
  private Expression operation;
  private Expression parameters;
  private Expression returnValue;

  public void execute(DelegateExecution execution) throws Exception {
    String wsdlString = (String)wsdl.getValue(execution);

    JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
    Client client = dcf.createClient(wsdlString);

    ArrayList<String> paramStrings = new ArrayList<String>();
    if (parameters!=null) {
      StringTokenizer st = new StringTokenizer( (String)parameters.getValue(execution), ",");
      while (st.hasMoreTokens()) {
        paramStrings.add(st.nextToken().trim());
      }
    }
    Object response = client.invoke((String)operation.getValue(execution), paramStrings.toArray(new Object[0]));
    if (returnValue!=null) {
      String returnVariableName = (String) returnValue.getValue(execution);
      execution.setVariable(returnVariableName, response);
    }
  }
}
</pre>
<p>By the way: We are currently discussing if we include this possibility of calling Webservices in the Activiti engine intself. But currently we want to finish the standard way first, which is for sure important to support. But I guess later on we will go for something like that as well, since that is really developer friendly <img src='http://www.bpm-guide.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><strong>Location transparency</strong></p>
<p>With our neat little Webservice call in the process we face a problem now: We have the WSDL-Address written in the process definition (actually in both of the examples above). What if the host for that service changes? Do I have to change all running processes? Not a good idea actually. Wait, location transparency, routing, that must be a job for an ESB! I would say: Maybe. Very often not <img src='http://www.bpm-guide.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  If I just want to hide the host of that Webservice to my process, what I need is a Registry. A Registry is included in every ESB, so the ESB may make sense. But very often I see the ESB as too unhandy, complex and oversized. Especially if you only need it as a Registry. Don&#8217;t get me wrong, there are use cases for ESBs, but only a Registry is not enough.</p>
<p>So to finish my quick post today, I extended the Webservice example with Mule Galaxy, an open source Registry. Therefor I just add the WSDL to the registry and access it from there now:</p>
<pre>
&lt;serviceTask id=&quot;Call_WS&quot; name=&quot;Call WS&quot; activiti:class=&quot;com.camunda.training.delegate.WsDelegate&quot; &gt;
  &lt;extensionElements&gt;
    &lt;activiti:field name=&quot;wsdl&quot; expression=&quot;http://my-registry-cluster/galaxy-web-1.5.3-embed/api/registry/Demo/VacationService.wsdl&quot; /&gt;
    &lt;activiti:field name=&quot;operation&quot; expression=&quot;saveVacationApproval&quot; /&gt;
    &lt;activiti:field name=&quot;parameters&quot; expression=&quot;${user}, ${days}&quot; /&gt;
  &lt;/extensionElements&gt;
&lt;/serviceTask&gt;
</pre>
<p>Now I could configure everything centrally in the registry but keep the neat simple Webservice mechanism I just developed <img src='http://www.bpm-guide.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><strong>Or using ESB?</strong></p>
<p><div id="attachment_2047" class="wp-caption alignright" style="width: 160px"><a href="http://www.bpm-guide.de/wp-content/uploads/2010/12/activiti-ws-galaxy.png"><img src="http://www.bpm-guide.de/wp-content/uploads/2010/12/activiti-ws-galaxy-150x102.png" alt="Calling a Webservice frm the process but using a Registry" title="Calling a Webservice frm the process but using a Registry" width="150" height="102" class="size-thumbnail wp-image-2047" /></a><p class="wp-caption-text">Calling a Webservice frm the process but using a Registry</p></div>                <div id="attachment_2046" class="wp-caption alignright" style="width: 160px"><a href="http://www.bpm-guide.de/wp-content/uploads/2010/12/activiti-ws-directly.png"><img src="http://www.bpm-guide.de/wp-content/uploads/2010/12/activiti-ws-directly-150x76.png" alt="Calling a Webservice directly from the process" title="Calling a Webservice directly from the process" width="150" height="76" class="size-thumbnail wp-image-2046" /></a><p class="wp-caption-text">Calling a Webservice directly from the process</p></div>                          <div id="attachment_2045" class="wp-caption alignright" style="width: 160px"><a href="http://www.bpm-guide.de/wp-content/uploads/2010/12/activiti-ws-mule.png"><img src="http://www.bpm-guide.de/wp-content/uploads/2010/12/activiti-ws-mule-150x111.png" alt="Calling a Webservice via the Mule ESB" title="Calling a Webservice via the Mule ESB" width="150" height="111" class="size-thumbnail wp-image-2045" /></a><p class="wp-caption-text">Calling a Webservice via the Mule ESB</p></div>              As a quick wrap up I want to talk about using the ESB in that scenario. Because we face that situation very often: In order to call a Webservice the customer wants to include the ESB. Often it is not completely clear why, maybe because the ESB marketing still makes a good job <img src='http://www.bpm-guide.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  On the right I added three small pictures, showing how we can access a Webservice from our BPMN process in Activiti. With the Mule integration currently being built calling a Webservice means, that we have to create a Mule service for it. This Mule service is exposed as a Webservice, which is then hooked in the process. I leave it up to you to think about if that makes sense to you&#8230; Let me know your opinions!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bpm-guide.de/2010/12/09/how-to-call-a-webservice-from-bpmn/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>&#8220;Oft erleben wir, dass die Tekkies mit dem Businesskram nichts anfangen wollen&#8221;</title>
		<link>http://www.bpm-guide.de/2009/04/16/oft-erleben-wir-dass-die-tekkies-mit-dem-businesskram-nichts-anfangen-wollen/</link>
		<comments>http://www.bpm-guide.de/2009/04/16/oft-erleben-wir-dass-die-tekkies-mit-dem-businesskram-nichts-anfangen-wollen/#comments</comments>
		<pubDate>Thu, 16 Apr 2009 08:18:14 +0000</pubDate>
		<dc:creator>Jakob Freund</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[BPM]]></category>
		<category><![CDATA[JAX]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[Vortrag]]></category>

		<guid isPermaLink="false">http://www.bpm-guide.de/?p=108</guid>
		<description><![CDATA[Bernd ist zu bescheiden. Also mache ich jetzt auf das kompakt-fundierte Interview aufmerksam, das er im Vorfeld der Jax gegeben hat Bernds cooles Interview Bitte nicht vergessen: Am 23. April ist der SOA &#038; BPM Day auf der Jax, den Bernd moderiert und wo auch ich selbst in gewohnt unbescheidener Manier etwas zu BPMN erzählen [...]]]></description>
			<content:encoded><![CDATA[<p><a href='http://www.bpm-guide.de/wp-content/uploads/2009/02/jax2009.png'><img src="http://www.bpm-guide.de/wp-content/uploads/2009/02/jax2009-150x33.png" alt="" title="Logo JAX 2009" width="150" height="33" class="alignleft size-thumbnail wp-image-89" /></a>Bernd ist zu bescheiden. Also mache ich jetzt auf das kompakt-fundierte Interview aufmerksam, das er im Vorfeld der Jax gegeben hat <img src='http://www.bpm-guide.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  </p>
<p><a href="http://it-republik.de/jaxenter/news/Oft-erleben-wir-dass-die-Tekkies-mit-dem-Businesskram-nichts-anfangen-wollen-048279.html">Bernds cooles Interview</a></p>
<p>Bitte nicht vergessen: Am 23. April ist der <a href="http://it-republik.de/jaxenter/jax/sessions/?tid=1073">SOA &#038; BPM Day</a> auf der Jax, den Bernd moderiert und wo auch ich selbst in gewohnt unbescheidener Manier etwas zu BPMN erzählen werde.</p>
<p>Man sieht sich <img src='http://www.bpm-guide.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.bpm-guide.de/2009/04/16/oft-erleben-wir-dass-die-tekkies-mit-dem-businesskram-nichts-anfangen-wollen/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Folien zum OOP-Vertrag</title>
		<link>http://www.bpm-guide.de/2009/01/29/folien-zum-oop-vertrag/</link>
		<comments>http://www.bpm-guide.de/2009/01/29/folien-zum-oop-vertrag/#comments</comments>
		<pubDate>Thu, 29 Jan 2009 15:11:44 +0000</pubDate>
		<dc:creator>Jakob Freund</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[BPEL]]></category>
		<category><![CDATA[BPM]]></category>
		<category><![CDATA[BPMN]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[Vortrag]]></category>

		<guid isPermaLink="false">http://www.bpm-guide.de/?p=82</guid>
		<description><![CDATA[Im Augenblick sitze ich im Speaker&#8217;s Room auf der OOP in München &#8211; erstaunlich, wen man hier so alles trifft. Unseren BPM-Vortrag haben Bernd und ich schon heute früh gehalten. Und obwohl wir doch recht viel Stoff in einen Talk bringen mussten, und ich außerdem noch verschlafen hatte und deshalb ohne Frühstück antreten musste, ist [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://www.sigs-datacom.de/sd/kongresse/oop_2009/gfx/logo_oop2009_small.gif' alt='OOP 2009' class='alignleft' />Im Augenblick sitze ich im Speaker&#8217;s Room auf der <a href="http://www.sigs-datacom.de/sd/kongresse/oop_2009/index.php">OOP in München</a> &#8211; erstaunlich, wen man hier so alles trifft. Unseren BPM-Vortrag haben Bernd und ich schon heute früh gehalten. Und obwohl wir doch recht viel Stoff in einen Talk bringen mussten, und ich außerdem noch verschlafen hatte und deshalb ohne Frühstück antreten musste, ist es gut gelaufen &#8211; wir haben jedenfalls ein tolles Feedback erhalten. <img src='http://www.bpm-guide.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
<span id="more-82"></span><br />
Die Fragen gehen übrigens fast immer in dieselbe Richtung: &#8220;Wie generiere ich aus fachlichen Prozessmodellen direkt ablauffähige technische Prozessmodelle?&#8221; Die Antwort ist auch immer dieselbe: &#8220;Finger weg!&#8221; <img src='http://www.bpm-guide.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Naja, ganz so einfach ist es natürlich nicht. Aber es ist ein wenig schade dass die Leute sich immer nur für diese Frage interessieren, obwohl das 1) Stand heute nun mal nicht (wirklich) funktioniert, 2) auch gar nicht unbedingt soviel bringt und 3) es andere Möglichkeiten im BPM-Kontext gibt, die heute schon funktionieren und sehr viel bringen. </p>
<p>Aber was sollt&#8217;s &#8211; hier kommen die Folien zum Vortrag:</p>
<div style="width:425px;text-align:left" id="__ss_966283"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/camunda/bpm-brcke-zwischen-business-und-it-presentation?type=presentation" title="BPM - Brücke zwischen Business und IT?">BPM &#8211; Brücke zwischen Business und IT?</a><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=bpm-brcke-zwischen-business-und-it-1233241239089815-3&#038;stripped_title=bpm-brcke-zwischen-business-und-it-presentation" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=bpm-brcke-zwischen-business-und-it-1233241239089815-3&#038;stripped_title=bpm-brcke-zwischen-business-und-it-presentation" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;">View more <a style="text-decoration:underline;" href="http://www.slideshare.net/">presentations</a> or <a style="text-decoration:underline;" href="http://www.slideshare.net/upload?type=presentation">upload</a> your own. (tags: <a style="text-decoration:underline;" href="http://slideshare.net/tag/bpm">bpm</a> <a style="text-decoration:underline;" href="http://slideshare.net/tag/soa">soa</a>)</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.bpm-guide.de/2009/01/29/folien-zum-oop-vertrag/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SOA im Winter &#8211; Teil 2 von 2</title>
		<link>http://www.bpm-guide.de/2009/01/16/soa-im-winter-teil-2-von-2/</link>
		<comments>http://www.bpm-guide.de/2009/01/16/soa-im-winter-teil-2-von-2/#comments</comments>
		<pubDate>Fri, 16 Jan 2009 21:30:10 +0000</pubDate>
		<dc:creator>Jakob Freund</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[process engine]]></category>
		<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://www.bpm-guide.de/?p=58</guid>
		<description><![CDATA[Dies ist die Fortsetzung von SOA im Winter &#8211; Teil 1 von 2. Die SOIA-Schicht ist diejenige welche uns die Kopfzerbrechen bereitet. Denn bislang existieren noch keine ausreichenden Antworten auf alle Fragen, die uns bei ihrer Umsetzung das Leben schwer machen. Aber gleichzeitig ist die SOIA eben auch das Thema mit den großen Potentialen: Wer [...]]]></description>
			<content:encoded><![CDATA[<p><a href='http://www.bpm-guide.de/wp-content/uploads/2009/01/wintersport21.jpg'><img src="http://www.bpm-guide.de/wp-content/uploads/2009/01/wintersport21.jpg" alt="" title="wintersport21" width="325" height="215" class="alignleft size-full wp-image-64" /></a>Dies ist die Fortsetzung von <a href="http://www.bpm-guide.de/2009/01/10/soa-im-winter-teil-1-von-2/">SOA im Winter &#8211; Teil 1 von 2.</a> Die SOIA-Schicht ist diejenige welche uns die Kopfzerbrechen bereitet. Denn bislang existieren noch keine ausreichenden Antworten auf alle Fragen, die uns bei ihrer Umsetzung das Leben schwer machen. Aber gleichzeitig ist die SOIA eben auch das Thema mit den großen Potentialen: Wer die Herausforderungen bewältigt, gewinnt eine Agilität, die seine Wettbewerber nicht besitzen. Es lohnt sich also trotz aller Unkenrufe, das SOA-Thema nüchtern und vorurteilsfrei zu betrachten!</p>
<p><span id="more-58"></span></p>
<p><strong>3.3.2.3    SOIA in der Praxis</strong><br />
Die Integrations- oder Agilitätsebene umreißt das Themengebiet, das in der öffentlichen Diskussion auch gern als Zusammenspiel von BPM und SOA bezeichnet wird. Es geht um die an der Unternehmensorganisation ausgerichtete Definition und Wartung von Services, sowie um ihre prozessorientierte Nutzung. Leider befinden sich die Kenntnisse und Erfahrungen im SOIA-Bereich heute noch weit unter dem Niveau der SOSA-Ebene. Das bedeutet, es existieren noch viele offene Fragen, wie eine SOIA richtig umgesetzt werden kann &#8211; und teilweise sind noch nicht einmal die richtigen Fragen gestellt worden.</p>
<p>Als relativ sicher gilt die grundsätzliche Feststellung, dass sich die Prozessagilität aus der Fähigkeit ableitet, definierte Services relativ einfach neu kombinieren zu können, und dass es deshalb eine Möglichkeit geben muss, die Reihenfolge der Nutzung vieler Services direkt an der Prozesslogik auszurichten, und diese Reihenfolge über einen Mechanismus verändern zu können, der keine direkte Programmierung erfordert. Diese Überlegung führt zunächst zum Ansatz der Service Orchestrierung, bei dem eine Orchestration Engine die Rolle eines Dirigenten übernimmt, und wie bei einem Orchester ausgehend vom Prozessmodell mal den einem, mal den anderen Service zur Ausführung einer Aufgabe anweist. Solche Aufgaben können sich auf einfache Datenoperationen beziehen, wie das Auslesen von Kundenstammdaten aus einem CRM-System, oder auf komplexe Geschäftslogik, wie die Berechnung eines Beleihungswertes im Rahmen einer Baufinanzierung.</p>
<p>Sofort drängt sich der Vergleich zum Human Workflow Management  auf: Dort übernimmt die Workflow Engine diese Rolle, und die am Prozess beteiligten Mitarbeiter und Partner stellen mit ihrer Arbeitskraft und Kompetenz die „Services“ bereit, die mittels Aufgabenzuweisung aufgerufen werden.<br />
Somit wird auch ersichtlich, warum ein ganzheitliches Business Process Management die Methoden „Human Workflow Management“  und „Service Orchestration“ gleichermaßen abdecken muss.</p>
<p><a href="http://www.bpm-guide.de/wp-content/uploads/2009/01/soia_asynch1.png"><img class="alignleft size-thumbnail wp-image-59" title="soia_asynch1" src="http://www.bpm-guide.de/wp-content/uploads/2009/01/soia_asynch1-150x150.png" alt="" width="150" height="150" /></a> Eine für die praktische Serviceorchestrierung sehr wichtige Differenzierung ist die Unterscheidung von synchronen und asynchronen Service Aufrufen („Service Calls“; Bild 3.18): Bei einem synchronen Service Call geht der Consumer davon aus, dass der Provider kurzfristig die Aufgabe abarbeiten und das Ergebnis zurückgeben wird. Dementsprechend wartet der Consumer auf diese Antwort und führt keine weiteren Prozess-Schritte aus. Dieses Szenario macht Sinn, wenn der Provider nicht überlastet ist oder die auszuführende Aufgabe nicht zu viel Zeit in Anspruch nimmt, wie zum Beispiel die Ausführung einer überschaubaren Berechnung. Mitunter kann der Consumer aber nicht wissen, wie lange die Antwort des Providers auf sich warten lassen wird. Möglicherweise dauert es Stunden, Tage oder gar Monate, weil die Realisierung des Services selbst ein komplexer Prozess ist. In solchen Fällen wird der Service asynchron aufgerufen, d.h. der Provider schickt nach erfolgtem Service Call lediglich eine Empfangsbestätigung und beendet dann vorerst die Kommunikation. Der Consumer führt seinen Prozess weiterhin aus, sofern er hierzu nicht auf die Antwort des Providers angewiesen ist, und irgendwann, zu einem späteren Zeitpunkt, meldet sich der Provider mit dem Ergebnis der erledigten Aufgabe. Diese Meldung findet dann als Aufruf des Consumer durch den Provider statt, weshalb dieser Vorgang auch „Callback“ genannt wird.</p>
<p><a href="http://www.bpm-guide.de/wp-content/uploads/2009/01/soia_asynch2.png"><img class="alignleft size-thumbnail wp-image-60" title="soia_asynch2" src="http://www.bpm-guide.de/wp-content/uploads/2009/01/soia_asynch2-150x150.png" alt="" width="150" height="150" /></a> Um diese abstrakte Darstellung besser greifbar zu machen, kann man sich Beispiele aus der physischen Welt vor Augen führen: Im Rahmen des jährliches Prozesses der Einkommenssteuererklärung überkommt den Bürger, während er das Formular ausfüllt, eine Idee zur Steueroptimierung. Weil er nicht weiß, ob diese auch legal ist, nimmt er die Beratungsleistung seines Steuerberaters in Anspruch, und ruft diesen kurzerhand an. Technisch gesehen führt er via Telefon einen Service Call durch, wobei er in diesem Call seine Frage als Parameter übergibt, und nun darauf wartet, dass der Steuerberater die Aufgabe des darüber Nachdenkens ausführt, und ihm in seiner Antwort seine Einschätzung der rechtlichen Lage mitteilt. Solange der Bürger am Telefon sitzt und auf die Antwort wartet, unterbricht er das Ausfüllen des Formulars, und sein Prozess ist in einen Wartezustand eingetreten. Es handelt sich also um einen synchronen Service Call.</p>
<p>Hätte der Bürger hingegen damit gerechnet, dass der Steuerberater gerade nicht verfügbar ist oder seine Fragestellung so komplex ist, dass diese eine ausführliche Prüfung erfordert, hätte er seinen Service Call möglicherweise via Email durchgeführt. Dann hätte er, ohne auf die Antwort zu warten, das Ausfüllen seines Formulars fortgesetzt. Irgendwann wäre er an einem Punkt angelangt, wo er die Antwort des Steuerberaters gebraucht hätte, um das Formular zu finalisieren, und wäre in einen Wartezustand eingetreten (zumindest, was diesen Prozess angeht). Technisch gesehen hätte er auf den Callback des Services gewartet, den er zuvor via Email asynchron aufgerufen hätte (Bild 3.19).</p>
<p>Die Nutzung asynchroner Service Calls ist mit einer besonderen Herausforderung verbunden, die sich ebenfalls mit dem skizzierten Beispiel erklären lässt: Die Antwort des Steuerberaters erreicht den Bürger vermutlich ebenfalls per Email. Dieser registriert zunächst den Erhalt und erkennt anhand des Absenders, dass es sich um eine Email seines Steuerberaters handelt, und (für gewöhnlich) anhand des Betreffs, dass sich diese nicht auf die noch offene letzte Honorarabrechnung bezieht, sondern eine Antwort auf die zuvor gestellte Frage ist. Er hat also eine gedankliche Zuordnung der Nachricht zu seinem Prozess vorgenommen. Dieser schlüsselbasierte Zuordnungsvorgang wird Corellation Handling genannt und ist eine unabdingbare, aber auch schwierige Anforderung im Rahmen der Service Orchestrierung.<br />
Einige Service Orchestration Prozesse funktionieren aus der Business-Perspektive nur nach dem Alles-oder-nichts-Prinzip: Es müssen alle Service-Aufrufe erfolgreich durchgeführt werden. Sollte auch nur ein Service-Aufruf fehlschlagen, müssen alle bereits erfolgten Aufrufe rückgängig gemacht werden. Dieses Prinzip der Atomarität dient der Transaktionssicherheit und gilt beispielsweise im Rahmen von Überweisungen:  Wenn im ersten Service Call der Betrag vom Konto A abgebucht wurde, jedoch der zweite Service Call zur Buchung auf Konto B fehlschlägt (zum Beispiel, weil es einen technischen Defekt im Netzwerk gibt), muss der Betrag auf das Konto A zurückgebucht werden, damit das Geld nicht „verloren“ geht. In derart kritischen Szenarien muss für jeden Service, der eine Aktion ausführt, vom Service Provider ein zweiter Service bereitgestellt werden, der genau diese Aktion wieder rückgängig machen kann und durch die Orchestration Engine im Fehlerfall aufgerufen werden kann. Der Umgang mit solchen Szenarien wird für gewöhnlich Compensation Handling genannt.</p>
<p>Die bis hierher vorgestellten Konzepte der</p>
<ul>
<li>Prozessorientierte Servicenutzung über Service Orchestration</li>
<li>Synchrone versus asynchrone Service Calls</li>
<li>Correlation Handling zur Zuordnung von Callbacks</li>
<li>Compensation Handling zur Realisierung atomarer Service Orchestrations</li>
</ul>
<p>sind bei weitem nicht alle, aber die in der Praxis besonders häufigen Aspekte, die es bei der technischen Umsetzung einer SOIA zu beachten gilt. Sie werden in vielen BPM-Suites entweder proprietär oder durch Implementierung von Standards wie z.B. BPMN zur optischen Gestaltung oder BPEL zur technischen Realisierung abgebildet.</p>
<p>Während diese Herausforderungen, wenngleich anspruchsvoll, so doch intellektuell bereits weit durchdrungen sind, existieren weitere, vergleichsweise mangelhaft geklärte Probleme auf der SOIA Ebene. Ein besonders schwieriges Problem bezieht sich auf die sinnvolle fachliche Abgrenzung von Services. Diese Abgrenzung mündet in eine Service Definition, die wiederum Grundlage der Service Implementierung ist. Dieser Prozess ist aufwendig, führt aber, sofern erfolgreich durchlaufen, erst wirklich zum gewünschten Effekt der flexiblen Nutzung von Services, um sie in verschiedenen Prozessen einsetzen zu können bzw. innerhalb eines Prozesses zu verschiedenen Zeitpunkten aufrufen zu können, und somit Prozessänderungen rasch umzusetzen – also genau der Zielsetzung der Integrationsebene, die dynamische Organisationsebene mit der starren Software-Ebene flexibel zu verbinden. Wenn diese organisatorische Ausrichtung fehlschlägt, führt dies im Ergebnis zu starren Services, die nur eine ganz bestimmte fachliche Anforderung abbilden, und nur zu einem ganz bestimmten Zeitpunkt innerhalb eines Prozesses aufgerufen werden können. In der Konsequenz könnten die implementierten Services zwar dank Orchestration Engine relativ schnell neu kombiniert werden, sind aber selbst gar nicht fähig zu unterschiedlichen Kombinationen, weil der Grad der „losen Kopplung“ nicht ausreicht und logische Abhängigkeiten zwischen den Services bestehen, die eine bestimmte Reihenfolge der Ausführung erzwingen, obwohl diese Reihenfolge nicht zwangsläufig der Prozesslogik geschuldet ist.</p>
<p>Für den Prozess der SOIA-gerechten Abgrenzung, Definition und Implementierung von Services gibt es (noch) kein Patentrezept, sondern nur die häufig leidvollen Erfahrungen derjenigen, die ihn bereits durchlaufen haben. Nicht wenige gehen tatsächlich den Weg über die Prozesse: Sie sammeln sämtliche Abläufe, die durch die SOIA zukünftig unterstützt werden sollen, und identifizieren die Gemeinsamkeiten und Unterschiede der jeweils benötigten IT-Unterstützung einzelner Schritte und Aktivitäten. Aus dieser Sammlung entsteht ein Domänenmodell, in dem sich zunächst Gruppen von Services zusammenfassen lassen. Innerhalb der Domänen werden dann einzelne Services voneinander abgegrenzt, wobei es durchaus zu Überlappungen in der bereitgestellten Leistung kommen darf. Die Implementierung dieser sehr grobgranularen Services muss dann auch nicht direkt in Code erfolgen, sondern kann selbst wieder eine Orchestrierung eher feingranularer Services sein – wobei man sehr darauf achten muss, die unterschiedlichen Prozessebenen konsistent aufeinander abzustimmen. So kann es vorkommen, dass ein feingranularer Service in unterschiedlichen grobgranularen Services Verwendung findet.</p>
<p>Sind Services implementiert und publiziert, können sie durch die „Allgemeinheit“ innerhalb, mitunter auch außerhalb des Unternehmens genutzt werden. Aufgrund des dezentralen Charakters einer SOA muss auch nach der Implementierung der Betrieb der Services gewissenhaft betreut werden, weshalb man hier auch vom Service LifeCycle Management spricht. Schließlich darf es nicht passieren, dass ein Service zur Angebotskalkulation, der im Unternehmensbereich A entwickelt und betrieben wird, eines Tages abgeschaltet wird, ohne alle anderen Unternehmensbereiche, die den Service in ihren Prozessen nutzen, rechtzeitig darüber zu informieren. Eine weitere unerwünschte Entwicklung wäre die Einrichtung einer eigenen Angebotskalkulation durch Unternehmensbereich B, weil sie den Service von Bereich A für mangelhaft hält, sodass innerhalb des Unternehmens zwei verschiedene Services für dieselbe fachliche Anforderung existieren. Die Sicherstellung der Serviceverfügbarkeit, die Vermeidung eines Wildwuchses und weitere Aspekte des Service LifeCycle Managements werden im Rahmen einer SOA-Governance organisiert. Doch auch für den Aufbau einer solchen Governance existieren bislang keine standardisierten, wissenschaftlich fundierten und praxiserprobten Verfahren, sondern lediglich die ersten punktuellen Erfahrungen von Unternehmen, die eine SOA größeren Umfangs eingeführt haben.</p>
<p>Abschließend muss konstatiert werden, dass sich SOIA momentan immer noch in einem Prozess der Entdeckung befindet. Zwar haben viele, vor allem größere Unternehmen bereits umfangreiche Projekte zur Steigerung ihrer Agilität durch die Einrichtung einer solchen Ebene angestoßen, und einige haben auch schon erste Erfolge melden können. Aber in der Breite existieren noch nicht ausreichend viele analysierbaren Ergebnisse, um eindeutige Muster für alle auftretenden Herausforderungen ableiten zu können. Wer sich mit der Einrichtung einer SOIA beschäftigt, muss deshalb  Pioniergeist und einen längeren Atem mitbringen, denn es passiert noch vieles nach dem Prinzip „Versuch-und-Irrtum“. Es wird vermutlich noch einige Jahre dauern, bis sich der Erfahrungshorizont im SOIA-Bereich auf dem heutigen Niveau der SOSA-Ebene befindet – diese zunächst negative Feststellung bedeutet natürlich gleichzeitig auch eine Chance für Unternehmen, die als „First-Mover“ eine Agilitätsebene in ihrer Prozesslandschaft entwickeln und somit einen Vorsprung gegenüber ihren Wettbewerbern realisieren wollen.</p>
<p>Die Idee der SOIA-Ebene steht auch in einem direkten Zusammenhang mit der allgemeinen Zusammenführung der Organisations- und IT-Perspektive von Business Process Management. Weitere Herausforderungen und Lösungsansätze in diesem Themenfeld werden in Kapitel 4 beschrieben.</p>
<p><strong>3.3.2.4    SOPA in der Praxis</strong><br />
Zum Thema Service-Orientierung auf Prozessebene gibt es über die allgemeine Zielsetzung hinaus in der Praxis momentan noch nicht viel zu sagen: Die Klärung der wesentlichen Fragen der SOIA-Ebene ist Voraussetzung, um sich überhaupt seriös mit Vorgehensweisen zur Einrichtung einer serviceorientierten Organisation befassen zu können. Deshalb ist es müßig, sich heute bereits die Frage zu stellen, wie man die eigenen Geschäftsprozesse organisatorisch „serviceorientiert“ gestalten kann. Diskussionen und Publikationen zu diesem Thema rutschen derzeit schnell in eher schwammige Diskurse über Kundenorientierung und Dienstleistungsmentalität ab, und münden gern in Forderungen wie „Prozesse müssen als Service gegenüber dem Kunden gestaltet werden, den dieser muss im Mittelpunkt der Betrachtung stehen“. Diese Ambition ist zwar löblich, aber gleichzeitig eine absolute Binsenweisheit und hat mit dem eigentlichen SOA-Paradigma nichts mehr zu tun.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bpm-guide.de/2009/01/16/soa-im-winter-teil-2-von-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SOA im Winter &#8211; Teil 1 von 2</title>
		<link>http://www.bpm-guide.de/2009/01/10/soa-im-winter-teil-1-von-2/</link>
		<comments>http://www.bpm-guide.de/2009/01/10/soa-im-winter-teil-1-von-2/#comments</comments>
		<pubDate>Sat, 10 Jan 2009 20:34:01 +0000</pubDate>
		<dc:creator>Jakob Freund</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://www.bpm-guide.de/?p=51</guid>
		<description><![CDATA[Nachdem der SOA-Begriff von den einschlägigen Anbietern in den letzten Jahren dermaßen überreizt wurde, dass man inzwischen schon fast von einem Brechreiz sprechen muss, haben wir wieder einmal ein Problem: SOA ist prinzipiell hilfreich, aber keiner will es mehr glauben. Was tun? Hier kommt in drei Teilen mal ein Auszug aus meinem Buch &#8220;Vom Geschäftsprozess [...]]]></description>
			<content:encoded><![CDATA[<p><a href='http://www.bpm-guide.de/wp-content/uploads/2009/01/wintersport12.jpg'><img src="http://www.bpm-guide.de/wp-content/uploads/2009/01/wintersport12.jpg" alt="" title="wintersport12" width="325" height="244" class="alignleft size-full wp-image-63" /></a>Nachdem der SOA-Begriff von den einschlägigen Anbietern in den letzten Jahren dermaßen überreizt wurde, dass man inzwischen schon fast von einem Brechreiz sprechen muss, haben wir wieder einmal ein Problem: SOA ist prinzipiell hilfreich, aber keiner will es mehr glauben. Was tun? Hier kommt in drei Teilen mal ein Auszug aus meinem Buch &#8220;<a href="http://www.bpm-guide.de/2008/11/29/neues-fachbuch-zu-bpm/">Vom Geschäftsprozess zum Workflow</a>&#8221; zu dem Thema, wo ich in Anlehnung an Prof. Dr. Winter den Begriff differenziere und versuche möglichst &#8220;untechnisch&#8221; zu zeigen, was heute (ganz ehrlich!) schon viel bringt, und wo eigentlich noch die ungelösten Schwierigkeiten liegen.<br />
<span id="more-51"></span><br />
<strong> 3.3.2	Serviceorientierte Architekturen (SOA)</strong><br />
<a href="http://www.bpm-guide.de/wp-content/uploads/2009/01/soa_winter.png"><img class="alignleft size-thumbnail wp-image-52" title="SOA nach Winter" src="http://www.bpm-guide.de/wp-content/uploads/2009/01/soa_winter-150x150.png" alt="SOA nach Winter" width="150" height="150" /></a></p>
<p>Im Kontext der Anwendungsintegration ist in jüngerer Zeit ein Paradigma der Softwaretechnik zu großer Popularität gelangt: Das Prinzip der serviceorientierten Architektur (SOA). Ein negativer Nebeneffekt dieses Hypes ist die Ausdehnung des Begriffes auf verschiedenste Problemstellungen, was zu allgemeiner Verwirrung und, daraus resultierend, zum Teil sogar Ablehnung  des Themas geführt hat. Aus diesem Grund soll an dieser Stelle zunächst eine Klärung und Abgrenzung des Begriffes vorgenommen werden.<br />
Diese Klärung orientiert sich an der Differenzierung des SOA-Begriffes, die Prof. Dr. Robert Winter vom</p>
<p>Institut für Wirtschaftsinformatik an der Universität St. Gallen vornimmt [WINTER2007].</p>
<p>Die Darstellung  im Bild ist angelehnt an das Business Engineering Framework der Universität St. Gallen, die zwischen fünf Ebenen der Unternehmensarchitektur unterscheidet:</p>
<p>•    Die strategische Ebene bezieht sich auf die grundsätzlichen Geschäftsmodelle des Unternehmens.<br />
•    Die organisatorische Ebene beinhaltet u.a. die Gestaltung sämtlicher Geschäftsprozesse eines Unternehmens, insbesondere mit der Ambition der strategischen Ausrichtung<br />
•    Die Integrationsebene (manchmal auch Agilitätsebene) verbindet Business und IT, indem sie die organisatorischen Anforderungen auf die unter ihr liegende<br />
•    Software-Ebene abbildet. Diese Ebene umfasst sämtliche Anwendungen eines Unternehmens.<br />
•    Die Infrastrukturebene wiederum bezieht sich auf die physische IT, also auf die Computer, Netzwerke, Peripheriegeräte etc.</p>
<p>Während die strategische Ebene aufgrund der steigenden Dynamik in den Märkten mittlerweile alle 1-2 Jahre angepasst werden muss, und die organisatorische Ebene sogar alle 3-6 Monate,  können die Ebenen Software- und Infrastruktur lediglich alle 6-10 Jahre, nämlich im Rahmen umfangreicher IT-Entwicklungs- bzw. IT-Beschaffungsprojekte, angepasst werden. In der Folge ist die IT in vielen Unternehmen ein Risiko für die inzwischen geradezu überlebenswichtige Beweglichkeit geworden. Dieses Agilitätsproblem soll zum Einen durch die Gestaltung der Integrationsebene gelöst werden, und ist zum Zweiten die wesentliche Motivation für das SOA-Paradigma. Allerdings unterscheidet Winter ausgehend vom Business Engineering Framework zwischen drei möglichen Ausprägungen der SOA-Diskussion:</p>
<blockquote><p>
<strong>Serviceorientierte Software-Architektur (SOSA)</strong><br />
Das Betrachtungsobjekt eines SOSA-Engagements sind die Anwendungen, die mit technischen Schnittstellen (Software-Services) auszurüsten sind. Diese Services kapseln Anwendungsfunktionalität auf relativ feingranularer Ebene. Hauptambition einer SOSA sind Interoperabilität, also die Fähigkeit zur plattformübergreifenden Zusammenarbeit von Anwendungen, und Wiederverwendbarkeit der Services. Im Business Engineering Framework ist SOSA dementsprechend der Software-Ebene zuzuordnen.</p>
<p><strong>Serviceorientierte Integrations-Architektur (SOIA)</strong><br />
Auf der Integrationsebene spielen sich die Aktivitäten zum prozessorientierten Aufbau einer SOA ab. Hier werden die auf der Software-Ebene umzusetzenden fachlichen Services definiert und auf die Organisationsebene ausgerichtet. Die Gestaltungsziele einer SOIA sind dementsprechend Business-IT-Alignment und Flexibilität der Services.</p>
<p><strong>Serviceorientierte Prozessarchitektur (SOPA)</strong><br />
Die Idee der SOPA ist wiederum die Definition von Services auf Organisationsebene, die durch Unternehmensprozesse umgesetzt werden und somit mit maximaler Effektivität und Effizienz gestaltet sein sollen.
</p></blockquote>
<p>Die von Winter vorgeschlagene Differenzierung ist sehr hilfreich, um die vielen verschiedenen öffentlichen Diskussionen, Vorschläge, aber auch die Kritik zu sortieren und zu bewerten, die sich momentan unter dem allgemeinen Schlagwort „SOA“ abspielen, und um einen nüchternen Abgleich mit der Praxis vorzunehmen.<br />
Dieser nun folgende Abgleich basiert auf den Erfahrungen und Schlussfolgerungen der Autoren dieses Buches und soll somit nicht als Auffassung von Winter oder der Universität St. Gallen dargestellt werden, auch wenn hier möglicherweise Übereinstimmungen existieren.</p>
<p><strong>3.3.2.2 SOSA in der Praxis</strong><br />
Betrachtet man zunächst den Bereich „SOSA“, so stößt man heute bereits auf viele erfolgreiche Praxisprojekte. SOSA ist ein sehr technisches Thema, und schon seit einigen Jahren haben sich die im Bereich der „Web Services“ definierten Standards in der Praxis bewährt. Das Basisprinzip von Software-Services ist das Zusammenspiel von Service-Provider, Service-Consumer und Service-Verzeichnis.</p>
<p><a href='http://www.bpm-guide.de/wp-content/uploads/2009/01/sosa_ws.png'><img src="http://www.bpm-guide.de/wp-content/uploads/2009/01/sosa_ws-150x150.png" alt="" title="sosa_ws" width="150" height="150" class="alignleft size-thumbnail wp-image-53" /></a></p>
<p>Der Consumer, also eine Anwendung, ruft einen von einem Provider, also einer anderen Anwendung, bereitgestellten Web Service auf (Bild). Der Kanal für diesen Aufruf ist in der Regel HTTP (Hypertext Transfer Protocol), bzw. das verschlüsselte und mit Authentifizierung versehene HTTPS (HTTP Secure). Prinzipiell können aber auch andere Kanäle genutzt werden, wie zum Beispiel SMTP (Simple Mail Transfer Protocol), der auch für den Versand von Emails benutzt wird. Der Provider führt die mit dem Service verbundene Funktion aus und gibt das Ergebnis an den aufrufenden Consumer zurück. Dieser Nachrichtenaustausch basiert häufig, aber nicht zwangsläufig, auf dem sogenannten SOAP-Protocol. Die Beschreibung des Services, die vom Provider veröffentlicht wird und durch den Consumer vor einem Aufruf gelesen werden muss, enthält die „Leistungsbeschreibung“ sowie die notwendigen Parameter, die der Consumer in seiner Anfrage übergeben muss, damit der Service ausgeführt werden kann. Diese Beschreibung wird in WSDL-Dateien bereitgestellt (Web Service Description Language). Beide Standards zur Realisierung von Web Services basieren ihrerseits auf XML. Proportional zur Komplexität der SOA steigt auch die Bedeutung eines Verzeichnisses, das die definierten Services verwaltet, eine sogenannte Service-Registry. Dieses Registry kann von einem interessierten Service-Consumer ähnlich wie ein Telefonbuch benutzt werden, um die Adressen von Services zu ermitteln, die Leistungen bereitstellen, die der Consumer benötigt. Im Kontext von Web Services wurden solche Verzeichnisse anfangs mit Hilfe des ebenfalls XML-basierten Standards UDDI (Universal Description, Discovery and Integration) aufgebaut, der sich jedoch im Gegensatz zu SOAP und WSDL auf breiter Front bislang nicht wirklich durchsetzen konnte.</p>
<p>Mittlerweile existieren viele weitere Standards und Frameworks, die spezielle Aspekte einer Web Services – Architektur adressieren, wie zum Beispiel das Thema Sicherheit. Wesentlich für das Verständnis aus übergeordneter Perspektive ist jedoch lediglich dieses relativ einfache Basisprinzip.<br />
Das Gedanke hinter der SOA-Umsetzung mittels Web Services ist auch Teil des allgemeinen Strebens nach Modularisierung in der klassischen Programmierung, indem Programmlogik in Funktionen oder Methoden zusammengefasst wird, die dann aus verschiedenen anderen Programmteilen heraus aufgerufen werden können. Auch die programmiersprachenübergreifende Modularisierung von Code wird bereits seit Jahrzehnten unternommen – ein relativ bekannter Ansatz ist der bereits 1991 veröffentlichte CORBA-Standard. In der Folge ist das SOA- bzw. SOSA-Paradigma an sich nicht neu, wohl aber die Realisierung mittels Web Services, die sich gegenüber früheren Versuchen wie CORBA auf breiter Front durchsetzen konnte. Diese Differenzierung ist wichtig, um Kritikern begegnen zu können, die SOA zu Unrecht als „alten Wein in neuen Schläuchen“ diskreditieren wollen.</p>
<p>Insgesamt sind die Potentiale und Herausforderungen, die mit reinen SOSA-Projekten verbunden sind, heutzutage weitestgehend erforscht und bekannt, sodass eine umfangreiche Praxisreife erreicht wurde. Das bedeutet nicht, dass  SOSA trivial wäre. Im Gegenteil, der auf Aufbau und Betrieb einer sauberen SOA auf Software-Ebene ist außerordentlich anspruchsvoll und muss von hochgradig kompetenten IT-Architekten verantwortet werden, und es existieren zahlreiche wissenschaftliche und praktische Fachbücher, die sich allein diesem Thema widmen. Der Bezug zum Geschäftsprozessmanagement ist jedoch nicht wirklich vorhanden, denn dieser wird auf der SOIA-Ebene hergestellt. Insofern ist auch die mitunter zu hörende Aussage unsinnig, SOA könne ohne Prozessmanagement nicht effektiv funktionieren – eine SOA auf reiner Software-Ebene kann das sehr wohl.</p>
<p>Thema des nächsten Beitrags: SOIA und SOPA</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bpm-guide.de/2009/01/10/soa-im-winter-teil-1-von-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Neue SOA-Studien</title>
		<link>http://www.bpm-guide.de/2009/01/02/neue-soa-studien/</link>
		<comments>http://www.bpm-guide.de/2009/01/02/neue-soa-studien/#comments</comments>
		<pubDate>Fri, 02 Jan 2009 19:58:21 +0000</pubDate>
		<dc:creator>Jakob Freund</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://www.bpm-guide.de/?p=50</guid>
		<description><![CDATA[Das Thema SOA (Serviceorientierte Architekturen) erfährt ja zur Zeit ein ziemliches &#8220;bashing&#8221;, d.h. der praktische Nutzen wird sehr kritisch betrachtet (siehe u.a. SOA is dead; Long Live Services). Zu dem Thema kann man natürlich geteilter Meinung sein, an dieser Stelle möchte ich aber nur mal auf zwei Studien aufmerksam machen, die vor nicht allzulanger Zeit [...]]]></description>
			<content:encoded><![CDATA[<p>Das Thema SOA (Serviceorientierte Architekturen) erfährt ja zur Zeit ein ziemliches &#8220;bashing&#8221;, d.h. der praktische Nutzen wird sehr kritisch betrachtet (siehe u.a. <a href="http://apsblog.burtongroup.com/2009/01/soa-is-dead-long-live-services.html" target="_blank">SOA is dead; Long Live Services</a>).</p>
<p>Zu dem Thema kann man natürlich geteilter Meinung sein, an dieser Stelle möchte ich aber nur mal auf zwei Studien aufmerksam machen, die vor nicht allzulanger Zeit in Deutschland entstanden sind:</p>
<p>Die Erste ist eine <a href="http://www.is.tu-darmstadt.de/files/20081202_forschungsbericht_soa_nutzen.pdf" target="_blank">Expertenbefragung zu den Nutzenpotentialen serviceorientierter Architekturen</a>, für die auch ich mich vor einiger Zeit zur Verfügung gestellt hatte. Der Bericht wurde von <span class="head"><a href="http://www.is.tu-darmstadt.de/index.php?article_id=116&amp;nid=511" target="_blank">Alexander Becker</a> an der TU Darmstadt im Rahmen seiner Dissertation erstellt. Für mich haben die Ergebnisse zwar nicht soviel Neues enthalten, aber für manch einen ist es vielleicht interessant zu erfahren, dass der Agilitätsnutzen von sehr viel mehr Experten wahrgenommen wird, als der Nutzen der Wiederverwendung von Services (ich selbst gehöre auch zu dieser &#8220;Fraktion&#8221;). </span></p>
<p>Das zweite Dokument ist eine komplette Dissertation mit dem Titel <a href="http://tuprints.ulb.tu-darmstadt.de/1191/" target="_blank">Die organisatorische Bedeutung von &#8220;Service Oriented Architectures&#8221;</a>. Sie wurde von Sebastian Remer erstellt, und das zufälligerweise ebenfalls an der TU Darmstadt. Das interessante hierbei ist das Fachgebiet, es handelt sich nämlich um eine Doktorarbeit in Sozialwissenschaften. Dementsprechend ist das Ganze natürlich etwas &#8220;weicher&#8221; als eine Arbeit aus dem Gebiet der Informatik. Sie liefert aber durchaus interessante neue Perspektiven auf das Thema und kann deshalb als Blick über den Tellerrand genutzt werden.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bpm-guide.de/2009/01/02/neue-soa-studien/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

