Sap Tech Ed06 Asug Wf


Published on

Presentation from Edwin Mukusha about his use of Wf-XML to connect two SAP systems

Published in: Technology
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide
  • In this example, we’ve used a dialog user. It needs to be pointed out that a Communications user is actually the ideal type of user for this application, since they can not log in as a dialog user can.
  • This step needs to be done in both systems to enable communication. The called system will need to be able to create XML documents in the calling system through this service.
  • If a workflow finishes almost instantaneously, the document interchange may become confused, which will result in error.
  • Without the reference workflow, you would have no context for binding the local workflow to the remote workflow.
  • Creating the reference workflow ahead of time may save you some trouble later when creating a web activity to call a remote system.
  • The calling workflow is an entirely different template than the reference workflow. It will use the reference workflow interface to exchange elements with the remote system.
  • The transfer format may be one of several versions of Wf-XML, as well as one or two other encoding schemes. Note on extra dialog: this dialog allows you to create your reference workflow on the fly, but it can cause issues with object locking. It also may be difficult to adjust the container interface and/or activate the newly created reference workflow if it is created here. It is much easier to create the reference workflow first, in a separate step, as we have done in our example.
  • The hostname and port number were entered in the remote system in transaction SWR_WEBSERVER. The workflow template number is the number from the REMOTE system. This needs to be differentiated from the reference workflow number, which will be entered in a different location a couple of slides later.
  • Two sets of documents are created if the “Wait For Feedback” box was checked in the Workflow Builder. Only one set of documents is necessarily created in the other instance (the CreateProcessInstance.request set). The second set indicates that the remote workflow has finished, which is only useful if you have instructed your calling workflow to wait for this information.
  • Mention work item ID at left side again. This transaction can be reached (for individual documents) by double clicking in SWXML. Mention needs to be made about error processing; specifically that it is done through the workflow log, where you can automatically navigate to this transaction.
  • Different versions of Wf-XML may be used. The standard specifications are also available at
  • The header section contains the URL of the called system. The body’s ObserverKey section contains the callback URL which will be used in the ProcessInstanceStateChanged interchange. The ContextData section, according to the spec, is completely free form. SAP, when generating documents, uses the above format for passing elements bound to the reference workflow’s container.
  • The immediacy of the response should be stressed, as in: the data returned from the HTTP request made with the originating document must actually contain the response document. Any other data returned immediately by the remote server will result in error. The MIME type is only of concern when dealing with Non-SAP systems. SAP’s Workflow environment will automatically generate documents of the correct type
  • REQUEST DOCUMENT: The state that is passed informs the calling system of the current state of the remote workflow. The remote workflow will export container elements in its “ResultData” section (corresponding with the ContextData section in the previous slides). RESPONSE DOCUMENT: Returned immediately by the calling system, similarly to the process in the previous slides.
  • Any language could be used on the web server in the example, as long as it immediately returns a proper Wf-XML document. In this example, a background process is not launched by the script, but there is no reason it couldn’t run some background programs that send a ProcessInstanceStateChanged document back to the R/3 system upon completion.
  • Sap Tech Ed06 Asug Wf

    1. 1. Developing Cross-System Workflow Applications with Wf-XML
    2. 2. Speaker Information <ul><li>Daniel J Rempe Systems Analyst, University of Nebraska </li></ul><ul><li>Edwin Mukusha Business Technologies Lead, University of Nebraska </li></ul>
    3. 3. Learning Objectives <ul><li>As a result of this workshop, you will be able to: </li></ul><ul><ul><li>Understand the concept and syntax of Wf-XML </li></ul></ul><ul><ul><li>Learn the essential steps to setup the Workflow environment for web activities </li></ul></ul><ul><ul><li>Develop workflows that accomplish tasks across related systems </li></ul></ul>
    4. 4. Server Configuration Workflow Setup Wf-XML At Run Time Wf-XML Document Overview Communicating With Non-SAP Systems
    5. 5. Server Configuration Workflow Setup Wf-XML At Run Time Wf-XML Document Overview Communicating With Non-SAP Systems
    6. 6. Creating a Service Alias in transaction SICF <ul><li>Open path default_host/sap/bc </li></ul><ul><li>Right click on workflow_xml and choose “New Sub-Element” </li></ul><ul><li>Enter the name of your alias </li></ul><ul><li>Click the radio button “Reference to an existing service” </li></ul>
    7. 7. Setting Service Parameters (1) <ul><ul><li>Enter a description in the provided space </li></ul></ul><ul><ul><li>Enter a userid and password for handling incoming requests </li></ul></ul><ul><ul><li>Modify security settings as necessary </li></ul></ul>
    8. 8. Setting Service Parameters (2) <ul><ul><li>Find the path to the workflow_xml node as before and click on it </li></ul></ul><ul><ul><li>Press the save button </li></ul></ul>
    9. 9. Activating alias link in SICF <ul><ul><li>Right click on your new alias and choose “Activate Link” </li></ul></ul>
    10. 10. Determining HTTP Port Number and Host Name <ul><ul><li>Open transaction SMICM </li></ul></ul><ul><ul><li>Use the menu path Goto->Parameters->Display </li></ul></ul><ul><ul><li>Find the parameter icm/server_port_ x containing the port number for the HTTP protocol </li></ul></ul><ul><ul><li>Find the parameter icm/host_name_full to determine the server’s host name </li></ul></ul>
    11. 11. Setting handler for workflows in SWR_WEBSERVER <ul><ul><li>Enter your hostname and port as a URL in the web server address box </li></ul></ul><ul><ul><li>Enter the path to your SICF service, which should be SAP/BC/ WORKFLOW_XML/ Alias Name /? </li></ul></ul><ul><ul><li>Test the URL by pressing the button next to the URL at the bottom </li></ul></ul>
    12. 12. Server Configuration Workflow Setup Wf-XML At Run Time Wf-XML Document Overview Communicating With Non-SAP Systems
    13. 13. Container interface for remote workflow <ul><ul><li>You will need to be familiar with the container elements in the workflow you are calling </li></ul></ul>
    14. 14. Remote workflow template <ul><ul><li>The remote workflow in this example will wait ten seconds before changing the value of a return element </li></ul></ul><ul><ul><li>It is necessary that some processing time occur for the document interchange to be successful </li></ul></ul>
    15. 15. Container interface for reference workflow <ul><ul><li>The reference workflow is a template in the calling system that refers to the remote workflow </li></ul></ul><ul><ul><li>Elements which need to be exchanged with the remote workflow must share the same definition in the reference workflow </li></ul></ul>
    16. 16. Reference Workflow Template <ul><ul><li>It is not necessary that the reference workflow contain any steps </li></ul></ul><ul><ul><li>Any steps included in the reference template will not actually be run on the calling system </li></ul></ul>
    17. 17. Creating the Calling Workflow
    18. 18. Creating a Web Activity <ul><ul><li>The web activity contains a URL that calls a workflow on another system </li></ul></ul><ul><ul><li>Transfer Format indicates the specification used to exchange information between systems </li></ul></ul><ul><ul><li>“ Wait For Feedback”, when checked, will cause the calling workflow to wait until the remote workflow finishes before it completes </li></ul></ul>
    19. 19. Using the URL Wizard <ul><ul><li>The URL wizard generates a URL for calling the remote system based on the information you enter </li></ul></ul>
    20. 20. Adding an alias to the URL <ul><ul><li>The wizard will not add your alias name from SICF to the generated URL. </li></ul></ul><ul><ul><li>For instance, in this link: HTTP:// </li></ul></ul><ul><ul><li>The alias needs to be added in this manner: HTTP://.....WORKFLOW_XML/ WF_XML_ALIAS /?~localkey..... </li></ul></ul>
    21. 21. Adding the Reference Workflow <ul><ul><li>Add the reference workflow created earlier in the provided space </li></ul></ul><ul><ul><li>Binding elements to the reference workflow is done on the Call tab </li></ul></ul>
    22. 22. Server Configuration Workflow Setup Wf-XML At Run Time Wf-XML Document Overview Communicating With Non-SAP Systems
    23. 23. Viewing progress in the Workflow Log <ul><ul><li>The remote workflow’s overall progress will be shown if the Wait For Feedback box was checked on the calling system </li></ul></ul><ul><ul><li>Specific steps within the remote workflow are not shown </li></ul></ul>
    24. 24. Viewing XML files with transaction SWXML <ul><ul><li>Transaction SWXML provides a report of Wf-XML documents sent or received by the system </li></ul></ul><ul><ul><li>The report organizes groups of documents by Work Item ID </li></ul></ul>
    25. 25. <ul><ul><li>Wf-XML documents are stored using the SAP Business Document Service </li></ul></ul><ul><ul><li>OAOR does not allow selection by date/time as SWXML does </li></ul></ul>View documents in transaction OAOR (BDS)
    26. 26. Server Configuration Workflow Setup Wf-XML At Run Time Wf-XML Document Overview Communicating With Non-SAP Systems
    27. 27. <ul><ul><li>Wf-XML is a standard published by the Workflow Management Coalition to enable interoperability between systems that use Workflow </li></ul></ul><ul><ul><li>This presentation uses version 1.1 of the Wf-XML standard. The full specification of this standard can be downloaded at: </li></ul></ul><ul><ul><li>The Wf-XML version is specified while creating the Web Activity step in the Workflow Builder </li></ul></ul>Wf-XML Specification
    28. 28. <ul><ul><li>This process shows a two-way communication process between systems </li></ul></ul><ul><ul><li>A Request is made by the initiating system, which is immediately acknowledged by a Response from the receiving system </li></ul></ul><ul><ul><li>The receiving system sends its own Request upon completing its task, which is acknowledged by a Response from the initiator </li></ul></ul>System Interaction Source:
    29. 29. <ul><ul><li>A CreateProcessInstance interchange is initiated when instructing a remote system to perform a particular workflow task </li></ul></ul><ul><ul><li>A ProcessInstanceStateChanged interchange is done whenever the state of the remote workflow changes (for example, when it is complete) </li></ul></ul>System Interaction (2) Source:
    30. 30. <ul><ul><li>This is a CreateProcessInstance.Request document. It was automatically generated by the Workflow system in the previous example </li></ul></ul>CreateProcessInstance - Request
    31. 31. <ul><ul><li>This is a CreateProcessInstance.Response document. It is returned immediately from the called system in acknowledgement of the Request document </li></ul></ul>CreateProcessInstance - Response The MIME type of the returned document MUST BE text/xml . Any other type will cause the originating workflow to end in error
    32. 32. ProcessInstanceStateChanged
    33. 33. Server Configuration Workflow Setup Wf-XML At Run Time Wf-XML Document Overview Communicating With Non-SAP Systems
    34. 34. <ul><ul><li>In this example, an Apache web server runs a Perl script at a given URL which responds with a Wf-XML document </li></ul></ul>Interfacing With Foreign Systems #!c:/perl/bin/Perl.exe ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); print &quot;Content-type: text/xml &quot;; print &quot;<?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot; ?> &quot;; print &quot; <WfMessage xmlns=&quot;; Version=&quot;1.1&quot;> &quot;; print &quot; <WfMessageHeader> &quot;; print &quot; <Response /> &quot;; print &quot; <Key>Apache Transaction - Free Text 1</Key> &quot;; print &quot; </WfMessageHeader> &quot;; print &quot; <WfMessageBody> &quot;; print &quot; <CreateProcessInstance.Response> &quot;; print &quot; <ProcessInstanceKey>Apache Transaction - Free Text 2</ProcessInstanceKey> &quot;; print &quot; <ContextData> &quot;; print &quot; <Name>Date</Name><Value>$mon/$mday/$year</Value> &quot;; print &quot; <Name>Time</Name><Value>$hour:$min:$sec</Value> &quot;; print &quot; <Return> &quot;; print &quot; <Success /> &quot;; print &quot; <Message> &quot;; print &quot; <Number>ZH999</Number> &quot;; print &quot; <Text>&amp; &amp; &amp; &amp;</Text> &quot;; print &quot; <V1>The method was executed successfully</V1> &quot;; print &quot; </Message> &quot;; print &quot; </Return> &quot;;
    35. 35. <ul><ul><li>Here, a Lotus Notes server runs an agent which attempts to create a calendar entry document before returning a Wf-XML document </li></ul></ul><ul><ul><li>The document returned is dependent upon whether the agent was able to accomplish its task </li></ul></ul>Interfacing With Foreign Systems (2) public class JavaAgent extends AgentBase { public void NotesMain() { try { ... creating calendar entry in Notes printXMLDocument(notes_doc.getUniversalID()); } catch(NotesException e) { createErrorDocument(e.text, 1); } }
    36. 36. Interfacing With Foreign Systems (3) private void createErrorDocument(String msg, int type) { try { notes_doc = sapleave_db.createDocument(); notes_doc.replaceItemValue(&quot;Form&quot;, &quot;Incoming&quot;); notes_doc.replaceItemValue(&quot;Error&quot;, new Integer(type));; printXMLDocument(notes_doc.getUniversalID()); } catch (NotesException ex) { ex.printStackTrace(); } } private void printXMLDocument(String id) { try { pw.println(&quot;Content-type: text/xml&quot;); pw.println(&quot;<?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot; ?>&quot;); pw.println(&quot;<WfMessage xmlns=&quot;; Version=&quot;1.1&quot;>&quot;); pw.println(&quot;<WfMessageBody>&quot;); … . Context Data of Response Document pw.println(&quot;</WfMessageBody>&quot;); pw.println(&quot;</WfMessage>&quot;); } catch (Exception ex) { ex.printStackTrace(); } }
    37. 37. Summary <ul><li>Wf-XML enables systems to communicate and manage wokflow tasks using a standard XML-based syntax </li></ul><ul><li>SAP’s Workflow Builder automatically handles the specifics of Wf-XML interaction using the Workflow Container and the Business Document Service </li></ul><ul><li>The SAP Workflow runtime environment provides interfaces for administration and troubleshooting of remote workflow tasks </li></ul><ul><li>Non-SAP systems can easily communicate with R/3 systems using the same document structure </li></ul>
    38. 38. Transaction Reference <ul><li>SICF – HTTP Service Hierarchy Maintenance (setup of workflow_xml node) </li></ul><ul><li>SWR_WEBSERVER – Setup of web server callback URL </li></ul><ul><li>SWXML – Selection Report for XML Documents </li></ul><ul><li>OAOR – Business Document Navigator </li></ul>
    39. 39. Further Information  Public Web: – Workflow Management Coalition - SAP Developers‘ Network  Related Workshops/Lectures at SAP TechEd ’05 EPI104 – Interoperability SAP NetWeaver–IBM WebSphere, Lotus, and Tivoli EPI200 - ASUG Workflow/Webflow SIG Community: Tips, Tricks and Information Sharing Session  Americas’ SAP Users’ Group (ASUG)
    41. 41. Feedback Please complete your session evaluation. Be courteous — deposit your trash, and do not take the handouts for the following session. Thank You !
    42. 42. <ul><li>No part of this publication may be reproduced or transmitted in any form or for any purpose without the express permission of SAP AG. The information contained herein may be changed without prior notice. </li></ul><ul><li>Some software products marketed by SAP AG and its distributors contain proprietary software components of other software vendors. </li></ul><ul><li>Microsoft, Windows, Outlook, and PowerPoint are registered trademarks of Microsoft Corporation. </li></ul><ul><li>IBM, DB2, DB2 Universal Database, OS/2, Parallel Sysplex, MVS/ESA, AIX, S/390, AS/400, OS/390, OS/400, iSeries, pSeries, xSeries, zSeries, z/OS, AFP, Intelligent Miner, WebSphere, Netfinity, Tivoli, and Informix are trademarks or registered trademarks of IBM Corporation in the United States and/or other countries. </li></ul><ul><li>Oracle is a registered trademark of Oracle Corporation. </li></ul><ul><li>UNIX, X/Open, OSF/1, and Motif are registered trademarks of the Open Group. </li></ul><ul><li>Citrix, ICA, Program Neighborhood, MetaFrame, WinFrame, VideoFrame, and MultiWin are trademarks or registered trademarks of Citrix Systems, Inc. </li></ul><ul><li>HTML, XML, XHTML and W3C are trademarks or registered trademarks of W3C®, World Wide Web Consortium, Massachusetts Institute of Technology. </li></ul><ul><li>Java is a registered trademark of Sun Microsystems, Inc. </li></ul><ul><li>JavaScript is a registered trademark of Sun Microsystems, Inc., used under license for technology invented and implemented by Netscape. </li></ul><ul><li>MaxDB is a trademark of MySQL AB, Sweden. </li></ul><ul><li>SAP, R/3, mySAP,, xApps, xApp, SAP NetWeaver and other SAP products and services mentioned herein as well as their respective logos are trademarks or registered trademarks of SAP AG in Germany and in several other countries all over the world. All other product and service names mentioned are the trademarks of their respective companies. Data contained in this document serves informational purposes only. National product specifications may vary. </li></ul><ul><li>The information in this document is proprietary to SAP. No part of this document may be reproduced, copied, or transmitted in any form or for any purpose without the express prior written permission of SAP AG. </li></ul><ul><li>This document is a preliminary version and not subject to your license agreement or any other agreement with SAP. This document contains only intended strategies, developments, and functionalities of the SAP ® product and is not intended to be binding upon SAP to any particular course of business, product strategy, and/or development. Please note that this document is subject to change and may be changed by SAP at any time without notice. </li></ul><ul><li>SAP assumes no responsibility for errors or omissions in this document. SAP does not warrant the accuracy or completeness of the information, text, graphics, links, or other items contained within this material. This document is provided without a warranty of any kind, either express or implied, including but not limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement. </li></ul><ul><li>SAP shall have no liability for damages of any kind including without limitation direct, special, indirect, or consequential damages that may result from the use of these materials. This limitation shall not apply in cases of intent or gross negligence. </li></ul><ul><li>The statutory liability for personal injury and defective products is not affected. SAP has no control over the information that you may access through the use of hot links contained in these materials and does not endorse your use of third-party Web pages nor provide any warranty whatsoever relating to third-party Web pages. </li></ul>Copyright 2006 SAP AG. All Rights Reserved