<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://training-course-material.com/index.php?action=history&amp;feed=atom&amp;title=SoaML_-_ServiceInterface</id>
	<title>SoaML - ServiceInterface - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://training-course-material.com/index.php?action=history&amp;feed=atom&amp;title=SoaML_-_ServiceInterface"/>
	<link rel="alternate" type="text/html" href="https://training-course-material.com/index.php?title=SoaML_-_ServiceInterface&amp;action=history"/>
	<updated>2026-04-22T21:53:31Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://training-course-material.com/index.php?title=SoaML_-_ServiceInterface&amp;diff=21412&amp;oldid=prev</id>
		<title>Bernard Szlachta at 14:56, 28 August 2014</title>
		<link rel="alternate" type="text/html" href="https://training-course-material.com/index.php?title=SoaML_-_ServiceInterface&amp;diff=21412&amp;oldid=prev"/>
		<updated>2014-08-28T14:56:32Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Cat|SoaML|SoaML20}}&lt;br /&gt;
= UML Collaboration and CollaborationUse =&lt;br /&gt;
Please see: [[UML - Collaboration]]&lt;br /&gt;
&lt;br /&gt;
= Modelling Services using ServiceInterface =&lt;br /&gt;
ServiceInterface:&lt;br /&gt;
* Type of a service port&lt;br /&gt;
* Can be bi-directional &lt;br /&gt;
* Can have a protocol&lt;br /&gt;
* Is defined from the perspective of the service provider using three primary sections:&lt;br /&gt;
** the provided and required Interfaces (UML interfaces)&lt;br /&gt;
** the ServiceInterface class&lt;br /&gt;
** the protocol Behavior (activity, sequence or state diagram)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;The provided and required Interfaces&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
* are standard UML interfaces that are &amp;#039;&amp;#039;&amp;#039;realized&amp;#039;&amp;#039;&amp;#039; or &amp;#039;&amp;#039;&amp;#039;used&amp;#039;&amp;#039;&amp;#039; by the ServiceInterface&lt;br /&gt;
* The realized interfaces specify&lt;br /&gt;
** the value provided&lt;br /&gt;
** the messages that will be received by the provider (and correspondingly sent by the consumer)&lt;br /&gt;
* The used interfaces define &lt;br /&gt;
** the value required&lt;br /&gt;
** the messages or events that will be received by the consumer (and correspondingly sent by the provider)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;The enclosed parts of the ServiceInterface&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* represent &amp;#039;&amp;#039;&amp;#039;the roles&amp;#039;&amp;#039;&amp;#039; that will be played by the connected participants&lt;br /&gt;
** the role that is typed by the realized interface will be played by the service provider;&lt;br /&gt;
** the role that is typed by the used interface will be played by the consumer.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;The Behavior&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* specifies the valid interactions between the provider and consumer &lt;br /&gt;
* it is the communication protocol of the interaction&lt;br /&gt;
* constraining but without specifying how either party implements their role&lt;br /&gt;
* any UML behavior specification can be used (interaction and activity diagrams are the most common)&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
[[File:ServiceInterface NobleProg Example.png|500x500px]]&lt;br /&gt;
&lt;br /&gt;
== Instructions ==&lt;br /&gt;
* A ServiceInterface is a UML Class and defines specific roles each participant plays in the service interaction&lt;br /&gt;
* These roles have a name and an interface type&lt;br /&gt;
* The interface of the provider (which must be the type of one of the parts in the class) is realized (provided) by the ServiceInterface class&lt;br /&gt;
** In our example, the OutlineTarget interface is realized by the CourseOutlinePush serviceInterface&lt;br /&gt;
* The interface of the consumer (if any) must be used by the class&lt;br /&gt;
** In our example, CourseOutlineSource is used by the CourseOutlinePush interface&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;«ServiceInterface» CourseOutlinePush&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
* Represents the service&lt;br /&gt;
* The terms and conditions under which the service can be enacted and the results of the service&lt;br /&gt;
* The service interface may be related to business goals or requirements (we want to &amp;#039;push&amp;#039; the outline to another site)&lt;br /&gt;
* The service interface can also be used in services architectures to show how multiple services and participants work together for a business purpose&lt;br /&gt;
* This service interface is defined from the perspective of the provider of the service – the CourseOutlineSource&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;provider : CourseOutlineTarget&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Defines the role of the provider in the CourseOutlinePush service&lt;br /&gt;
* The type of the provider role is “CourseOutlineTarget”&lt;br /&gt;
* This is the interface that a provider will require on a port to provide this service.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;consumer: CourseOutlineSource&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* This is the role of the consumer in the courseOutlinePush service&lt;br /&gt;
* The type of the consumer role is “CourseOutlineSource”&lt;br /&gt;
* This is the interface that a consumer will implement on a port to consume this service&lt;br /&gt;
* In the case of a one-directional service, there may not be a consumer interface&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CourseOutlineTarget&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* The interface contain all the operations and signals a providing participant may receive when enacting this service&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CourseOutlineSource&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* The interface for a CourseOutlinePush service consumer&lt;br /&gt;
* This indicates all of the operations and signals a consuming participant will receive when enacting the service&lt;br /&gt;
* In simple unidirectional services, the consumer interface may be missing or empty.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;nobleprog.co.uk&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* A participant&lt;br /&gt;
* The CourseOutlinePush ServiceInterface is used to type «servicePoint» ports and «requestPoint» ports of participants&lt;br /&gt;
* The provider of the service uses a «servicePoint» port and the consumer of the service uses a «requestPoint» port&lt;br /&gt;
* Since the &amp;#039;nobleprog.co.uk&amp;#039; uses a «requestPoint» the “conjugate” interfaces are used – so the nobleprog.co.uk&amp;#039; port provides the CourseOutlineSource interfaces and uses the CourseOutlineTarget interface&lt;br /&gt;
* Since they are &amp;#039;&amp;#039;&amp;#039;conjugate&amp;#039;&amp;#039;&amp;#039;, the ports on the nobleprog.co.uk and nobleprog.us can be connected to enact the service&lt;br /&gt;
* When «requestPoint» is used the type name will be preceded with a tilde (“~”) to show that the conjugate type is being used&lt;br /&gt;
&lt;br /&gt;
== Exercise ==&lt;br /&gt;
* Design a service interface for a PlaceOrderService using example above, use following words:&lt;br /&gt;
OrderPlacer, OrderTaker, submitOrder, confirmOrder, rejectOrder, orderProvider, orderConsumer&lt;/div&gt;</summary>
		<author><name>Bernard Szlachta</name></author>
	</entry>
</feed>