sca c++, c and cobol
DESCRIPTION
www.oasis-open.org. SCA C++, C and COBOL. Bryan Aupperle David Haney 18 Sept. 2007. OASIS Status. C and C++ specifications transitioning from OSOA to OASIS Governed by the SCA-C-C++ TC Policy related annotations Cross standard consistency Compliance test suites - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: SCA C++, C and COBOL](https://reader036.vdocuments.mx/reader036/viewer/2022062518/56814706550346895db440f8/html5/thumbnails/1.jpg)
SCA C++, C and COBOLSCA C++, C and COBOL
www.oasis-open.org
Bryan AupperleDavid Haney
18 Sept. 2007
![Page 2: SCA C++, C and COBOL](https://reader036.vdocuments.mx/reader036/viewer/2022062518/56814706550346895db440f8/html5/thumbnails/2.jpg)
OASIS Status C and C++ specifications
transitioning from OSOA to OASIS Governed by the SCA-C-C++ TC
Policy related annotations Cross standard consistency Compliance test suites
COBOL specification continuing development under OSOA SCA-C-C++ TC work will influence
![Page 3: SCA C++, C and COBOL](https://reader036.vdocuments.mx/reader036/viewer/2022062518/56814706550346895db440f8/html5/thumbnails/3.jpg)
SCDL for C++ interface.cpp
header – C++ header file describing the interface class – (optional) Class defining the interface callbackHeader – (optional) C++ header describing the
callback interface callbackClass – (optional) Class defining the callback
interface remotable – (optional)
implementation.cpp library – Shared library defining the service factory path – (optional) Path to search for the library header – C++ header file describing the implementation class – (optional) Class defining the implementation scope – (optional)
![Page 4: SCA C++, C and COBOL](https://reader036.vdocuments.mx/reader036/viewer/2022062518/56814706550346895db440f8/html5/thumbnails/4.jpg)
C++ APIs ComponentContext
Primary interface for accessing SCA defined components.
Component Meta Information getCurrent(), getURI(), getProperties(),
getDataFactory() Service Lookup
getService(), getServices() Service References
getServiceReference(), getServiceReferences() getSelfReference()
![Page 5: SCA C++, C and COBOL](https://reader036.vdocuments.mx/reader036/viewer/2022062518/56814706550346895db440f8/html5/thumbnails/5.jpg)
C++ APIs (cont) ServiceReference
Interface for interacting with service instances
Conversational interface getConversationID(), setConversationID()
Asynchronous interface getCallbackID(), setCallbackID() getCallback(), setCallback()
![Page 6: SCA C++, C and COBOL](https://reader036.vdocuments.mx/reader036/viewer/2022062518/56814706550346895db440f8/html5/thumbnails/6.jpg)
C++ WSDL Mapping Defines a translation from a C++ class interface
to a WSDL Uses comment annotations to control the
conversion Defines mapping rules for:
primitive types C++ Standard Library types SDO classes, structs, arrays, enums
Defers to the OMG WSDL to C++ Mapping for generating C++ headers from a WSDL.
![Page 7: SCA C++, C and COBOL](https://reader036.vdocuments.mx/reader036/viewer/2022062518/56814706550346895db440f8/html5/thumbnails/7.jpg)
SCDL for C Interface defined by a set of functions interface.c
header – header file describing the interface callbackHeader – (optional) header file describing the
callback interface remotable – (optional)
implementation.c module – binary executable for the component
implementation library – (optional) indicates whether the service is
implemented as a library or a program location – (optional) location of the module scope – (optional)
![Page 8: SCA C++, C and COBOL](https://reader036.vdocuments.mx/reader036/viewer/2022062518/56814706550346895db440f8/html5/thumbnails/8.jpg)
C APIs Synchronous Programming
SCALocate(), SCALocateMultiple() – get handle(s) to services SCAInvoke() – invokes an operation of a service SCAProperty<PropertyType>() – get the value of a property SCAGetFaultMessage(), SCASetFaultMessage() – get or set a
fault message for a service operation Asynchronous Programming
SCAGetCallback() – get handle of callback instance SCACallback() – invoke a callback operation SCASetCallback() – set a callback function for a reference SCASetCallbackID(), SCAGetCallbackID() – get or set the callback
ID for a service instance Conversation Services
SCAGetConversationID(), SCASetConversationID() – get or set a user provided conversation ID
SCAEndConversation() – end a conversation
![Page 9: SCA C++, C and COBOL](https://reader036.vdocuments.mx/reader036/viewer/2022062518/56814706550346895db440f8/html5/thumbnails/9.jpg)
Implementation as Program Support environments where function is
provided by programs API
SCAService() – get name of invoked service SCAOperation() – get name of invoked
operation SCAMessageIn() – get input message
SCAMessageOut() – set output message
![Page 10: SCA C++, C and COBOL](https://reader036.vdocuments.mx/reader036/viewer/2022062518/56814706550346895db440f8/html5/thumbnails/10.jpg)
SCDL for COBOL interface.cobol
copybook – copybook file describing the interface callbackCopybook – (optional) copybook file that
describing the callback interface location – (optional) location of library containing the
copybook files remotable – (optional)
implementation.cobol program –binary executable for the component
implementation location – (optional) location of library containing the
binary executable scope – (optional)
![Page 11: SCA C++, C and COBOL](https://reader036.vdocuments.mx/reader036/viewer/2022062518/56814706550346895db440f8/html5/thumbnails/11.jpg)
COBOL APIs Same functions as in C
Synchronous Programming SCAProperty is not typed
Program-Based Implemenation Support
Asynchronous Programming Conversation Services
![Page 12: SCA C++, C and COBOL](https://reader036.vdocuments.mx/reader036/viewer/2022062518/56814706550346895db440f8/html5/thumbnails/12.jpg)
C & COBOL WSDL Mapping Defines a translation between language
structures and WSDL Defines type mapping rules for:
Primitive types Structs or Groups SDO Variable length strings and unbounded arrays
Defines mapping rules between operations and functions
![Page 13: SCA C++, C and COBOL](https://reader036.vdocuments.mx/reader036/viewer/2022062518/56814706550346895db440f8/html5/thumbnails/13.jpg)
Annotations Contained in comments, processed by tools Interface
Invocation attribute OneWay Remotable Callback
EndConversation Implementation
Scope Lifecycle Conversation information Property Reference
![Page 14: SCA C++, C and COBOL](https://reader036.vdocuments.mx/reader036/viewer/2022062518/56814706550346895db440f8/html5/thumbnails/14.jpg)
Open Implementations Apache Tuscany Native
http://incubator.apache.org/tuscany/sca-native.html
Implements pre-1.0 C++ specification Working towards 1.0 compliance
![Page 15: SCA C++, C and COBOL](https://reader036.vdocuments.mx/reader036/viewer/2022062518/56814706550346895db440f8/html5/thumbnails/15.jpg)
OASIS References SCA-C-C++ TC
http://www.oasis-open.org/apps/org/workgroup/sca-c-cpp/description.php
SCA-C-C++ Charter http://www.oasis-open.org/committees/
sca-c-cpp/charter.php
![Page 16: SCA C++, C and COBOL](https://reader036.vdocuments.mx/reader036/viewer/2022062518/56814706550346895db440f8/html5/thumbnails/16.jpg)
OSOA References OSOA SCA Specifications
http://www.osoa.org/display/Main/Service+Component+Architecture+Specifications
Final Specifications SCA C++ Client and Implementation
Draft Specifications SCA C Client and Implementation SCA COBOL Client and Implementation
![Page 17: SCA C++, C and COBOL](https://reader036.vdocuments.mx/reader036/viewer/2022062518/56814706550346895db440f8/html5/thumbnails/17.jpg)
Other References OMG WSDL to C++ Specification
http://www.omg.org/docs/ptc/06-08-01.pdf
![Page 18: SCA C++, C and COBOL](https://reader036.vdocuments.mx/reader036/viewer/2022062518/56814706550346895db440f8/html5/thumbnails/18.jpg)
Backup
![Page 19: SCA C++, C and COBOL](https://reader036.vdocuments.mx/reader036/viewer/2022062518/56814706550346895db440f8/html5/thumbnails/19.jpg)
C++ APIs (cont) Supplemental APIs
RefCountingPointer Defines a reference-counted pointer interface
SCAException Provides a hierarchy of exception classes for use
with the SCA API.• SCANullPointerException• ServiceRuntimeException• ServiceUnavailableException• NoRegisteredCallbackException• ConversationEndedException• MultipleServicesException
![Page 20: SCA C++, C and COBOL](https://reader036.vdocuments.mx/reader036/viewer/2022062518/56814706550346895db440f8/html5/thumbnails/20.jpg)
C++ Annotations Contained in comments, processed by tools Interface Header File
@Remotable @Callback @OneWay @EndConversation
Implementation Header File @Scope @EagerInit @AllowsPassByReference @Conversation @Property @Reference
![Page 21: SCA C++, C and COBOL](https://reader036.vdocuments.mx/reader036/viewer/2022062518/56814706550346895db440f8/html5/thumbnails/21.jpg)
C Annotations Contained in comments, processed by tools Header File
@Operation, @Callback @Remotable, @OneWay @EndConversation
Implementation File @Service @Reference @Property @Scope @Init, @Destroy, @EagerInit @AllowPassByReference @Conversation
![Page 22: SCA C++, C and COBOL](https://reader036.vdocuments.mx/reader036/viewer/2022062518/56814706550346895db440f8/html5/thumbnails/22.jpg)
COBOL Annotations Contained in comments, processed by tools Interface File
@Operation, @Callback @Remotable, @OneWay @EndConversation
Implementation File @Service @Reference @Property @Scope @Init, @Destroy, @EagerInit @AllowPassByReference @Conversation
![Page 23: SCA C++, C and COBOL](https://reader036.vdocuments.mx/reader036/viewer/2022062518/56814706550346895db440f8/html5/thumbnails/23.jpg)
C++ Example Interface SCDL
<service name=“LoanService”><interface.cpp header=“LoanService.h”/>
</service>
Implementation SCDL
<component name=“LoanServiceImpl”><implementation.cpp library=“loan” header=“LoanServiceImpl.h”/>
</component>
![Page 24: SCA C++, C and COBOL](https://reader036.vdocuments.mx/reader036/viewer/2022062518/56814706550346895db440f8/html5/thumbnails/24.jpg)
C++ Example (cont) LoanService Interface
class LoanService {public: virtual bool approveLoan( unsigned long customerNumber, unsigned long loanAmount) = 0;};
![Page 25: SCA C++, C and COBOL](https://reader036.vdocuments.mx/reader036/viewer/2022062518/56814706550346895db440f8/html5/thumbnails/25.jpg)
C++ Example (cont) LoanServiceImpl Interface
class LoanServiceImpl :public LoanService {public: virtual bool approveLoan( unsigned long customerNumber, unsigned long loanAmount) { // … }};
![Page 26: SCA C++, C and COBOL](https://reader036.vdocuments.mx/reader036/viewer/2022062518/56814706550346895db440f8/html5/thumbnails/26.jpg)
C++ Example (cont) SCA Application
int main(void) { ComponentContextPtr context = ComponentContext::getCurrent(); LoanService* service = (LoanService*) context->getService(“loanService”); bool result = service->approveLoan(12345, 100);
}