7
About Object Oriented About Object Oriented Programming Programming This section will cover some basic aspects of object oriented programming. It is our goal to make you familiar with the way of thinking in distributed environments and to make clear that object oriented programming is not programming in a different syntax where methods take the part of procedures and classes replace function libraries, but that the central philosophy of objects is the communication with messages and reacting on events. Chapter Contents Classes and Object Instances Sharing Resources and Proxy Applications About Messages and Communication 10

Section 06

Embed Size (px)

DESCRIPTION

Section 06

Citation preview

Page 1: Section 06

About Object Oriented ProgrammingAbout Object Oriented ProgrammingThis section will cover some basic aspects of object oriented programming. It is our goal to make you familiar with the way of thinking in distributed environments and to make clear that object oriented programming is not programming in a different syntax where methods take the part of procedures and classes replace function libraries, but that the central philosophy of objects is the communication with messages and reacting on events.

Chapter Contents

Classes and Object Instances

Sharing Resources and Proxy Applications

About Messages and Communication

10

Page 2: Section 06

About Object Oriented Programming

Classes and Object InstancesClasses are blueprint for objects. Classes that belong together are stored in libraries, the dll-files. With the CreateObject command the class template is instantiated into a living object.

Classes are blueprints for an object creation and multiple objects can be created simultaneously from the same class blueprint

A class is a definition that describes how an object should look like and what methods it can execute. The “trick” with classes is, that an arbitrary number of objects can be created from a class template simultaneously. In classical programming terms a class would be somewhat like a program stored on a disk. Every program has its own memory space where it stores the content of its variables. An instance of a class is called an object. That would correspond to having the program with its own proper memory space loaded. Now you could load the program with a new and separate memory space loaded again and executed. That would be the second instance of a class.

Steps to create a class in Visual Basic After choosing “New project” in Visual-Basic select “ActiveX-dll” and

1. enter a name for the library in the menu-item “project”, “properties”, “project name”. This name will also be a default for the name of the VB project file (vbp) and the dll-filename. You could use three different names, but I don’t know what this would be good for.

2. enter a name for the class in the properties-windows. In the project-explorer you can add additional classes. The source-Code for each class are stored in a files with the extension .CLS

3. select the property “MTS-TransactionMode” to anything else but “not an MTS object”. “uses transactions” is a good choice.

4. In the “general”, “declaration”-section of the code-window you can create properties for the class by simply entering: PUBLIC XXX AS TTT (XXX is any name for the property and TTT is the data type i.e. integer.

5. the prefix PUBLIC before the name of a sub-program is used to define a method.Note that only complied dll can go into the MTS. You build the dll in the file-menu.

Sample Code for a class

Public counter as IntegerPublic Sub inc() counter = counter + 1End SubPublic Sub clear() counter = 0End Sub

2 of 6 Axel Angeli 12 March 2001

20

30

Page 3: Section 06

Messages Within R/3

Sharing Resources and Proxy ApplicationsA proxy is an application that installs itself between an application and a server. For both ends the proxy will appear as the other peer.

Proxy play an important roles in sharing critical and expensive connections The most obvious use of a proxy application to share a resource is connecting through a modem to a server. In an apartment threaded model this would lead to the undesirable situation that every new session would try to dial up an individual connection to the server and produce extra phone costs. A proxy application can work as a handler to share the once established phone line. The proxy will resemble to the client like the server application itself and take requests from the client. The requests will then be serialized by the proxy and forwarded to the true server as soon it is available.

Proxy marshalingThe ability to accept requests from multiple clients and redirect them to a single connection is called Proxy Marshaling. Proxy marshaling commands the COM application to not create a new object instance whenever a new thread is opened but instead to serialize them and process them one after the other.

Proxy may help to limit the number of simultaneous connections to R/3R/3 allows a virtually unlimited number of simultaneous RFC connections. However, there are situations when you prefer to use a single connection to R/3 ad reroute all requests through that single connection. This may already be desirable when your R/3 server does limit the number of simultaneous RFC connections by a single user.

A Proxy can shield the internal login data from ASPAnother even more important use of a proxy component is the ability to shield the R/3 login data from the ASP tier. For that purpose, the ASP will always contact the proxy component as a trusted application, i.e. it will not require any kind of login. The proxy will automatically perform the appropriate logon to R/3 and get the necessary logon credentials from a hidden source. The logon can be set up in a way that it remains absolutely transparent to the ASP, i.e. the ASP then can see the R/3 as a permanent and local connection.

Axel Angeli 12 March 2001 3 of 6

40

50

Page 4: Section 06

About Object Oriented Programming

About Messages and CommunicationOne of the basic concepts of client server technologies is the communication between client and server through messages and message queues. Instead of calling a distinct program, the requesting client posts a query to a central message queue where it is picked up and processed by a message handler or an interested application. The results of the processing are then posted back to the queue according to an agreement between client and server.

A client posts its inquiry to a common bulletin board to be picked up by a serverThe thought behind messages is like in real life. Someone (the client) needs help of a competent service person (the server). However, the client does not know the server that may be capable to fulfill the requirement. So it posts its message to a public bulletin board and any interested server that reads the message, picks up the message, executes the required activity and returns with a result.

Tasks can be executed secretly or the inquiry may be used to establish a private communication channelOf course, this can be done through a variety of processing protocols. The server can perform the task silently and eventually come back with a result. The server could also read the message, inform the client that it is interested and ask for detailed instructions what to do and how to do it. After a client and server have contacted each other they may establish a private communication channel to continue the task.

Imagine a student looking for a flat and a landlord looking for a tenantSimple imagine the scenario, when a landlord has a free apartment to let and is looking for a tenant, while at the same time a student looks for a reasonable apartment. The two would not know each other, so how can they come together. If they are clever they go to a public bulletin board where the landlord posts his offer. When the student finds the quote attractive he will contact the landlord under the posted code or telephone number. Thereafter the two will establish a private conversation to negotiate the deal.

The Microsoft MSMQ Message Queue Sever is a central message server through which all applications may communicate

The Microsoft Message Queue or any other message server within your enterprise network server the purpose of the bulletin board for all running applications. The MSMQ is actually a central database in which a client posts a message until a server picks them up. Physically the MSMQ is simply a database where all messages and returned results are centrally stored in a categorized manner.

Imagine a student looking for a flat and a landlord looking for a tenantAs an intelligent message system the MSMQ does not only store the messages and results, but can also wake up interested applications if it recognizes the type of message. To do this job Microsoft supplies an MSMQ application called Microsoft MSMQ Trigger. This application can scan message strings for keywords, codes, sender or receiver addresses and trigger an appropriate application. Microsoft Outlook’s rule based mail organizer works in a similar way.

Message Queue Application

Message queue allow asynchronous processing of ASP requests where an application can submit a request and instead of waiting for a result spent the time doing something else.

The ASP page submits its requests to the message queue and receives a ticketWhen an ASP application has a resource intensive request it submits this request to the message queue. When the queue accepts the request it returns a unique ticket number which will be needed later to pick up results returned by the application that served the message queue.

4 of 6 Axel Angeli 12 March 2001

60

70

80

90

Page 5: Section 06

Messages Within R/3

The message queue serializes and stores the requestsWhen a message has been received by the queue it holds the request until a service demon asks to process them. Depending on the action requested the message queue submits the task and either holds the request package open for a result message to be returned by the service or it stores a compliant message immediately to the queue to be picked up as success message by the calling process.

An interest handler demon picks up the next in line and processes itParallel there are a number of demons running which can handle the message queue requests. They would usually scan the queue for compliant requests and pick up the next in line.

Results of the queue demon are stored back to the queue under the ticket referenceThe handler routine that served the request then stores a result message back to the queue. How this result message looks like depends on the agreement made between queue requester and the service demon. Usually it would be an XML wrapped data table.

Axel Angeli 12 March 2001 5 of 6

100

110

Page 6: Section 06

About Object Oriented Programming

Messages Within R/3The R/3 programming model is built heavily around a communication model. There are principally three different message pipes installed in R/3, each of them serving different purposes and with individual advantages and disadvantages. They are message controls, workflow events and IDocs.

NAST Message Control

Message control serves as a mail drop to trigger subsequent actionsThe message control is also known as the NAST messaging due to the name of the database table NAST (germ: NAchrichtenSTeuerung). The mechanism is, that a requesting application deposits a request message in table NAST and an interested consumer application eventually picks them up and decides upon an appropriate action. The consuming action is fully independent from the requester. If the requester expects a response, it has to poll the expected result tables.

6. The requesting application stores a message in table NAST7. A program (usually RSNAST00) polls the table NAST for unprocessed messages and activates

the program that has been dedicated to process that message8. The processing function finally finalizes the message by marking the message as processed

and storing status information and eventual log data to it

Workflow Events

Workflow events signal that a program has reach a certain state and there may be a workflow handler to react on it or not

Workflow events are more direct way to trigger a subsequent function. The idea is that the calling program signals to the public that it reached a certain state, it fires an event. The workflow handling mechanisms evaluates the event and determines if there is an interested application that should react on the event. Contrary to the classical way of calling a subroutine or chaining a subsequent program a workflow event does not require a subsequent action. The calling program simply tells the public that it reach some state, but it does not care if there a program to react on. That is like someone, who comes home and calls back his spouse to report the arrival. The informed partner may just take notice of it, but is not obliged to do something. Indeed, it is the rule that a workflow event is simply burnt and triggers no reaction at all.The decision between NAST or workflow communication depends on the circumstances. As a rule of thumb you may consider the following questions:

9. Which mechanism is supported by the calling application? Not all apps do actually support workflow or NAST message creation in SAP standard.

10. If the message requires obligatorily an action and especially if you require a protocol of the action after the message, then you should prefer NAST messaging.

11. If the number of required action sparse and the calling app is not interested in any of the following events, then you may consider workflow.

Intermediate Documents (IDocs)

Intermediate Documents (IDocs) are used if the message holds additional data which is not stored anywhere else

SAP’s IDocs (Intermediate Documents, read also [Axel Angeli; The R/3 Guide to EDI and Interfaces]) have been originally designed as a quarantine mailbox for incoming and outgoing EDI data. Their big advantage is that the IDoc system comes with a sophisticated monitoring and error tracking system, that allows controlled reprocessing of IDocs, manipulation of partly erroneous data and stores sorted and categorized protocol information. R/3 can send IDocs to itself and thus you can benefit from the mechanism, by building an IDoc message and submit it to the IDoc processor.error tracking

6 of 6 Axel Angeli 12 March 2001

120

130

140

150