1 / 46

SmartForms for Banner Workflow

SmartForms for Banner Workflow. Presented by: Wallace Neikirk , Wright State University March 26, 2008. Introduction. This is a discussion of “ SmartForms ”  SmartForms is the fusion of a web app to a workflow using web services.

barto
Download Presentation

SmartForms for Banner Workflow

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SmartForms for Banner Workflow Presented by: Wallace Neikirk, Wright State University March 26, 2008

  2. Introduction • This is a discussion of “SmartForms”  • SmartForms is the fusion of a web app to a workflow using web services. • This idea was motivated by workflow’s static forms & factory floor approvals. • With SmartForms, we keep a large number of requestors at the web site & and a small number of admins in workflow doing business. • In addition, we will discuss “AjaxForms”  • AjaxForms is the fusion of a web app to a workflow using the browser’s AJAX services. • This enables (out-of-the-box) “SimpleForms” to have dynamic Banner data in its HTML components.

  3. Agenda • WSU Architecture • SmartForm Architecture • Development Environment • “FOAP Change” Request Form • SimpleForm Model • SmartForms • Design Details • AJAX Forms  • Design Details • Future Plans • Questions

  4. WSU Computing from 30,000 feet WSU Architecture

  5. WSU Architecture • We are a Unified Digital Campus • We bought all the SCT products • WSU has been a Banner school since 2005.

  6. WSU computing to implement SmartForms. SmartForm Architecture

  7. SmartForm Architecture • This is the subset of the architecture to do SmartForms. • The only piece of architecture we added is the Tomcat App Server. • It houses the SmartForms. • Workflow communicates with Tomcat using Restful Web Services. • Workflow provides a “Web App” technology type to initiate the web services. • Tomcat communicates with Workflow using it’s SOAP services. • SCT Workflow is running an AXIS server to service SOAP request.

  8. Tools to construct SmartForms. Development Environment

  9. Development Environment • Development stations … • EasyEclipse 1.2.2 • Tomcat 4.1 • Import Workflow & Oracle jars into Eclipse • {Home}/lib/workflow • Clean compile  • Production Deployment … • Publish SmartForm.war to Tomcat • Publish components, models, events, etc. to Workflow • Publish supporting tables to Oracle • Note, we are on Workflow 4.4

  10. Let’s begin with the original request form. “FOAP Change” Request Form

  11. “FOAP Change” Request Form • This is the current PDF Form • org_request_form.pdf • User can request new, revised, or terminated FOAP elements • Composed of FOAP content & approvals • User prints out, fills out, and sends through University mail

  12. Document Processing • Document processing can be very straight forward … • User completes a request form • Approvals are collected • An Admin of the University does the task • The requestor is notified when complete

  13. Document processing with SimpleForms, i.e., Workflow Custom Activity. SimpleForm Model

  14. SimpleForm Model • Let’s implement “FOAP Change” solely with workflow • User signs onto Workflow • User fires off the workflow from “My Processes” • User fills out the request with SimpleForm • Static • Validation loop • Approvals are collected with SimpleRoute & SimpleApproval • Route is encoded into the model • Factory floor approvals

  15. SimpleForm Demo • Let’s create a “FOAP Change” request • Note, all users that can make this request must be defined as Workflow users • Note, the request becomes an annoying guess & validate loop • Note, all possible approval paths must be encoded into the model

  16. Document processing with SmartForms, i.e., Workflow web application business component. SmartForm Model

  17. SmartForm Request • This is the “FOAP Change” Request implemented as a SmartForm • SvtSmartForm?action=Render&formTyp=OrgnReq • User navigates to the SmartForm from any University web site • SmartForm provides dynamic drop downs, search dialogs, and generated approvals • When the user submits the SmartForm, the corresponding workflow is initiated with the use of web services

  18. SmartForm Model • The approval loop is driven by SmartForm’s generated route • The SmartForm & Workflow cooperate to collect approvals • Workflow posts to the SmartForm for the next approver • The SmartRoute task takes the next approver to the SmartForm for approval action

  19. SmartForm Demo • Let’s create a “FOAP Change” request using a SmartForm • SvtSmartForm?action=Render&formTyp=OrgnReq • Note, requestors are NOT defined to workflow. We limit workflow users to a small set of University admins. • Note, Dynamic drop downs, Search dialogs, etc. • Note, generated route based upon content of form

  20. SmartForms is a web application that uses Workflow web services. Design Details

  21. Sequence Diagram • Create a SmartForm scenario … • User completes the SmartForm • Route is generated • Workflow is initiated • Approve a SmartForm scenario … • User approves the SmartForm • Set workflow context parms • Complete workitem task

  22. SmartForm Design • SmartForms cooperate with Workflow using web services • The SmartForm class implements … • Initiate a workflow • Get/set context parameters • Release/complete a workitem • Workflow post request to a SmartForm • @BUILTIN_WORKITEM

  23. Class Diagram • The Dispatch Servlet instantiates the proper model bean based upon the formTyp posted • The SmartForm Class handles all the web services • The SmartRoute Class handles all approvals, rejections, etc. • The OrgnReq Class inherits it’s “Smart” functionality

  24. Database Diagram • These are the supporting data tables for SmartForms • The SmartAudit tables logs changes to the SmartForms

  25. SmartForm code examples using Workflow web services. Code Details

  26. WebAppTechnology Type • This is the SmartForm business component defined in workflow. • It uses the “Web App” technology type delivered with SCT Workflow. • This component will launch the SmartFormwebapp on Tomcat. • Simply fill in the Web Launch Parameters – host, action, etc. • Note, the special @ variables. These are either built-in system variables or context parameters. • The @BUILTIN_WORKITEM is a special variable.

  27. Getting Userid & Role • select i.id, i.role_id, i.performer_id, • r.id, r.name, r.description, • u.id, u.logon • fromworkflow.vworkitemsi, • workflow.role r, • workflow.wfuser u • where i.id = wfWorkitem • andi.role_id = r.id • andi.performer_id = u.id • Workflow post to a SmartForm sending it @BUILTIN_WORKITEM • This piece of data can be used to obtain the user’s workflow userId and role • SmartForm needs to know who is performing the task • The @BUILTIN_WORKITEM is used to call SOAP services to get/set workflow context parms, complete/release workitems.

  28. Initiate a Workflow • classpath: axis-ant.jar, axis.jar, jaxrpc.jar, saaj.jar, workflow.jar, xercesImpl.jar, xml-apis.jar • import com.sct.workflow.ws.v1_0.*; • import com.sct.workflow.ws.messages.v1_0.*; • Authentication authentication; • PrimaryKeyprimaryKey; • try { • String principal = new String("wfwebservices"); • String credential = new String(“u_pick_it"); • authentication = new Authentication(principal, credential); • NameParameterValuePairformIdParm = new NameParameterValuePair(); • formIdParm.setName("formId"); • formIdParm.setStringValue(formId); • PostExternalEventRequestpostReq = new PostExternalEventRequest(); • postReq.setAuthentication( authentication ); • postReq.setEventName( new String("eSmartOrgnReq") ); • postReq.setProductTypeName( new String("pSmartForm") ); • postReq.setExternalSource( new String("Wright State University") ); • postReq.setExternalID( new String("SmartOrgnReq") • + String.valueOf( System.currentTimeMillis() ) ); • postReq.setExternalDate( createDateTime( new Date() ) ); • postReq.setWorkflowName( new String("SmartOrgnReq") ); • postReq.setParameter( new NameParameterValuePair[] {formIdParm} ); • WorkflowWSLocator locator = new WorkflowWSLocator(); • locator.setWorkflowWSEndpointAddress( • "http://oas.wright.edu:8080/test/ws/services/WorkflowWS/v1_0"); • WorkflowWSPortTypews = locator.getWorkflowWS(); • PostExternalEventResponse response = ws.postExternalEvent( postReq ); • primaryKey = response.getExternalEventPK(); • This is the Java code to initiate a workflow • Class path should have the workflow jars • {Home}/lib/workflow • Import workflow packages • Authenticate, set parms, post request, post response • Define product type, business event, workflow model, etc.

  29. Get/Set Context Parms • classpath: axis-ant.jar, axis.jar, jaxrpc.jar, saaj.jar, workflow.jar, xercesImpl.jar, xml-apis.jar • import com.sct.workflow.ws.v1_0.*; • import com.sct.workflow.ws.messages.v1_0.*; • Authentication authentication; • PrimaryKeyprimaryKey; • try { • String principal = new String("wfwebservices"); • String credential = new String(“u_pick_it"); • authentication = new Authentication(principal, credential); • primaryKey = new PrimaryKey(wfWorkitem); • NameParameterValuePairorgnParm = new NameParameterValuePair(); • orgnParm.setName( "orgn" ); • orgnParm.setStringValue( orgn); • SetWorkItemContextRequestsetReq = • new SetWorkItemContextRequest(authentication, primaryKey, • new NameParameterValuePair[] { orgnParm} ); • WorkflowWSLocator locator = new WorkflowWSLocator(); • locator.setWorkflowWSEndpointAddress( • "http://oas3.wright.edu:8080/workflow/ws/services/WorkflowWS/v1_0"); • WorkflowWSPortTypews = locator.getWorkflowWS(); • SetWorkItemContextResponse response = ws.setWorkItemContext( setReq ); • } catch (Exception e) {} • This is the Java code to set workflow context parameters • Import workflow packages • Authenticate, set parms, set request, set response • Used when update approve, etc. a SmartForm • Get workflow context parameter is similar

  30. Release/Complete Workitem • classpath: axis-ant.jar, axis.jar, jaxrpc.jar, saaj.jar, workflow.jar, xercesImpl.jar, xml-apis.jar • import com.sct.workflow.ws.v1_0.*; • import com.sct.workflow.ws.messages.v1_0.*; • Authentication authentication; • PrimaryKeyprimaryKey; • try { • String principal = new String("wfwebservices"); • String credential = new String(“u_pick_it"); • authentication = new Authentication(principal, credential); • primaryKey = new PrimaryKey(wfWorkitem); • CompleteWorkItemRequestcompleteReq = • new CompleteWorkItemRequest(authentication, primaryKey); • WorkflowWSLocator locator = new WorkflowWSLocator(); • locator.setWorkflowWSEndpointAddress( • "http://oas3.wright.edu:8080/workflow/ws/services/WorkflowWS/v1_0"); • WorkflowWSPortTypews = locator.getWorkflowWS(); • CompleteWorkItemResponse response = ws.completeWorkItem( completeReq ); • } catch (Exception e) {} • This is the Java code to complete a workitem • Import workflow packages • Authenticate, complete request, complete response • Used when render, reject, etc. a SmartForm • Release a workitem is similar

  31. Extending the functionality of SimpleForms with Browser's AJAX Services. AJAX Forms

  32. AjaxForm Architecture • This is the subset of the architecture to do AjaxForms. • The only piece of the architecture we added is the AjaxForm Service. • It houses the Ajax components, e.g., Manager List, Fund List, Orgn List, etc. • These components had to be installed on the SCT Workflow Server – OC4J. • The components must come from the same ip domain as the Workflow SimpleForms. • Workflow communicates with these Ajax components using the browser’s XmlHttpRequest object. • This is done with some simple JavaScript functions. • The Ajax components communicate to Workflow by using those same SOAP services. • SCT Workflow is running an AXIS server to service SOAP request.

  33. AjaxForm Model • This is a copy of the SimpleForm Model, except … • The AjaxForm replaces the SimpleForm task. • Actually, it is still a SimpleForm, but embedded into it are JavaScript calls to the Ajax components installed on the Workflow Server. • These components return live Banner data to the Browser. • So, we get dynamic data in our drop-down’s, list boxes, etc. • This technique eliminates that irritating validation loop 

  34. AjaxForm Demo • Let’s create a “FOAP Change” request using an AjaxForm • Note, Dynamic Banner data in the drop-downs, list boxes, etc. • The annoying guess & validate loop has been eliminated.

  35. AjaxForms is a web application that uses Browser AJAX services. Design Details

  36. AjaxForm Design • AjaxForms cooperate with Workflow through the Browser’s XmlHttpRequest Object. • The AjaxForm class implements … • Send/Receive Xml request • Get/set workflow context parameters • When the AjaxForm post to its components on the Workflow Server, it is passing that same @BUILTIN_WORKITEM variable. • This allows the components to determine the user performing the task, what role they are playing, etc. • It also allows the components to set/get workflow context parameters through the use of those same SOAP services.

  37. Class Diagram • The Dispatch Servlet instantiates the proper model bean based upon the compTyp posted. • The AjaxForm Class handles all the Ajax and SOAP services. • The MgrList, FundList, OrgnList, and ProgList Class handle getting and setting up of the Banner data for the dynamic Html components. • The List classes inherit all their communication functionality.

  38. AjaxForm code examples using Browser AJAX services. Code Details

  39. Workflow Model Html • <script type="text/javascript" • src="/wsuwft/wf/ajax/finmgr/MgrList.js"> • </script> • <a href="#" • onclick="javascript:getMgrList(@workflowId);">Get • </a> • <span id="mgrlist_result"> • </span> • This small amount of Html goes into the AjaxForm task in the Workflow Model. • This is just a SimpleForm with some JavaScript dropped into it. • The imported JavaScript (MgrList.js) does the Ajax communications. • When the hyperlink is clicked, an Ajax call is made to the Workflow Server for dynamic Banner data. • Note, it passes the all important @BUILTIN_WORKITEM • The Workflow Server responds with a manager list drop-down which is placed into the <span id> tag.

  40. Get Ajax Request Object • varreceiveReq = null; • function getXmlHttpRequestObject() { • if (window.XMLHttpRequest) { • return new XMLHttpRequest(); //Not IE • } else if(window.ActiveXObject) { • return new ActiveXObject("Microsoft.XMLHTTP"); //IE • } else { • alert("Your browser doesn't support the XmlHttpRequest object.”); • } • } • This is part of the imported JavaScript (MgrList.js) that handles Ajax communications. • First, we need to get a reference the the browser’s XmlHttpRequest object. • If the browser in no IE, then there is one way, • If the browser if IE, then you do it the MicroSoft way  • Some browsers don’t support Ajax ???

  41. Get Ajax Manager List • function getMgrList(wfWorkflowId) { • receiveReq = null; • receiveReq = getXmlHttpRequestObject(); • if (receiveReq.readyState == 4 || receiveReq.readyState == 0) { • receiveReq.open("GET", • "/wsuwft/SvtAjaxComp?compTyp=MgrList&action=GetMgrList&wfWorkflowId=" + • wfWorkflowId, true); • receiveReq.onreadystatechange = handleGetMgrList; • receiveReq.send(null); • } • } • function handleGetMgrList() { • if (receiveReq.readyState == 4) { • document.getElementById("mgrlist_result").innerHTML = receiveReq.responseText; • } • } • This is part of the imported JavaScript (MgrList.js) that handles Ajax communications. • The getMgrList function … • First, gets a reference to the XmlHttpRequest object • Then, it makes an asynchronous call to the Workflow Server for Banner data • It also registers the function to handle the response to the asynchronous call. • The handleGetMgrList function is called every time the request object changes state. • It receives the dynamic html component from the server • And, places in the <span id> tag on the AjaxForm page.

  42. Get Java Manager List • // read mgr comp • datMgrList = new DatMgrList(wfMan, wfLog, wfEmail, wfDbPool); • datMgrList.setFmgrLastName(""); • datMgrList.readMgrList(); • // construct html view • StringBuffersb = new StringBuffer(); • sb.append("<select name='mgrList' onclick='javascript:setMgrList(this.value);'>"); • Enumeration e = datMgrList.getMgrList().elements(); • while ( e.hasMoreElements() ) { • DatMgrListdatMgrList = (DatMgrList) e.nextElement(); • sb.append("<option value='" + datMgrList.getFmgrCodePidm() + "," + • wfWorkflowId + "," + wfWorkitem + "'>" + datMgrList.getFmgrName() + "</option>"); • }; • sb.append("</select>"); • this.setHtmlVewMgrList(sb.toString()); • // return mgr list • PrintWriter pw = resp.getWriter(); • pw.print(cmdMgrList.getHtmlVewMgrList()); • pw.close(); • This is part of the CmdMgrList Java component installed on the Workflow Server. • This method does the get operation. • It responds to the asynchronous Ajax call from the Browser. • It reads the dynamic Banner data • Constructs an Html drop-down list • Returns that Html component to the browser.

  43. Set Java Manager List • // read mgr comp • //datMgrList = new DatMgrList(wfMan, wfLog, wfEmail, wfDbPool); • datMgrList.setFmgrCodePidm(dFmgrCodePidm); • datMgrList.readMgrRow(); • // set the fmgrPidm & fmgrName for the manager selected !!! • Authentication authentication; • PrimaryKeyprimaryKey; • String principal = new String("wfwebservices"); • String credential = new String(""); • authentication = new Authentication(principal, credential); • primaryKey = new PrimaryKey(wfWorkitem); • NameParameterValuePaircompIdParm = new NameParameterValuePair(); • fmgrCodePidmParm.setName("fmgrCodePidm"); • fmgrCodePidmParm.setStringValue(datMgrList.getFmgrCodePidm().toString()); • NameParameterValuePairfmgrNameParm = new NameParameterValuePair(); • fmgrNameParm.setName("fmgrName"); • fmgrNameParm.setStringValue(datMgrList.getFmgrName()); • SetWorkItemContextRequestsetReq = new • SetWorkItemContextRequest(authentication, primaryKey, • new NameParameterValuePair[] {fmgrCodePidmParm, fmgrNameParm} ); • WorkflowWSLocator locator = new WorkflowWSLocator(); • locator.setWorkflowWSEndpointAddress( • "http://oas3.wright.edu:7778/wfTEST3/ws/services/WorkflowWS/v1_0"); • WorkflowWSPortTypews = locator.getWorkflowWS(); • SetWorkItemContextResponsesetResp = ws.setWorkItemContext( setReq ); • This is also part of the CmdMgrList Java component installed on the Workflow Server. • This method does the set operation. • It responds to the asynchronous Ajax call from the Browser. • When the user clicks on the drop-down, this method reads that particular Manger’s data from Banner. • Then, it uses Workflow’s SOAP services to set its context parameters.

  44. Future Plans • Move more SmartForms into production • Can I add new forms quickly? • Try to make SmartForms into a framework • Make it quick & easy for new forms to enter the framework • Alter existing static Workflows with Ajax components.

  45. Summary • We’ve taken a look at SmartForms • SmartForms cooperate with workflows through the use of web services • SmartForms have dynamic drop-downs, search dialogs, and generated approvals • They limit the number of workflow users to a small set of University admins • Also, we have taken a look at AjaxForms • AjaxForms cooperate with workflows using the browser’s AJAX services • AjaxForms produce dynamic drop-downs, list boxes, etc.

  46. Thank You!Q & A Wallace Neikirk wallace.neikirk@wright.edu

More Related