|
XML in a.c.pro Why would I want to use XML with a.c.pro? a.c.pro XML provides you with the possibility to integrate your front-office applications directly with a.c.pro. Here is just one example: If you operate a web store and you need to handle customer support requests, you can design your store's support pages so that they appear consistent with the rest of your store. After the customer fills out and submits a support request form, however, you can then use a.c.pro XML to immediately send the information to a.c.pro. The customer does not notice this; he does not know that the request he just submitted was immediately integrated into a system -- a.c.pro -- that inherently supports deadlines, escalations, automatic e-mail notifications and many other features. Because the data will be sent directly to a.c.pro, your support staff can immediately begin enjoying all of the back-office benefits of a.c.pro while they fulfill the customer's request. A Sample Web Application: "AC Rocks" We have created a live demonstration web application to illustrate the exact scenario discussed above. The sample scenario is a web store -- "AC Rocks" -- that sells rocks and stones. Also on the site is a customer service area that collects support requests from customers and sends information about those requests directly to a.c.pro. When a customer visits the support page and enters a support request, he has no knowledge that the details of his request are being sent to a.c.pro. When a member of the support staff logs into the "real" a.c.pro (www.acpro.at), he will see and work with the items that were created using a.c.pro XML from the website. Click here to view AC Rocks, our sample a.c.pro XML web application.If you are a programmer who is interested in using a.c.pro XML, please visit our sample code page. The code on that page is used in the AC Rocks sample web store. Integrate your Testing with a.c.pro a.c.pro XML is also ideal for integrating a.c.pro into your test environments. For example, tools like Armstrong Consulting's WebTest can be scripted to automatically feed test results into a.c.pro. In this way, the tedious exercise of documentation of test-cycles and test-results can be automated, ensuring an audit-trail of test activities for later reference. DTD and Documentation Available The DTD (schema) file can be downloaded directly from http://www.acpro.at/acpro.dtd or viewed in its entirety below on this page. A few short examples of a.c.pro XML messages are found below. More detailed examples, and an overview of all a.c.pro XML messages, can be found in the XML Interface Guide (a PDF file). Sample a.c.pro XML Messages Posting the following to http://www.acpro.at/xmli.asp: <?xml version ="1.0"?> <a.c.pro> <Login userid="userx" password="bongo"/> <SaveItem> <Item projectName="my project" itemTitle="a new entry" assignedToID="fred"> <Description>this is the description</Description> </Item> </SaveItem> </a.c.pro> will produce the following response: <?xml version ="1.0"?> <a.c.pro> <LoginResponse status="ok"/> <SaveItemResponse status="ok" itemKey="545454"/> </a.c.pro> or in the event of a login error: <?xml version ="1.0"?> <a.c.pro> <LoginResponse status="error" message="Invalid user id or password"/> </a.c.pro> or in the event of an error trying to save the item: <?xml version ="1.0"?> <a.c.pro> <LoginResponse status="ok"/> <SaveItemResponse status="error" message="Project does not exist"/> </a.c.pro> More examples, and an overview of all a.c.pro XML messages, can be found in the XML Interface Guide (a PDF file). DTD (Schema) (The DTD may also be viewed as a separate file here.) <!ELEMENT a.c.pro ( Login, GetProjectList*, GetProject*, SaveProject*, GetCategoryList*, GetPermissionList*, GetStatusList*, GetUrgencyList*, SaveCategoryList*, SavePermissionList*, SaveStatusList*, SaveUrgencyList*, GetProjectItems*, GetItems*, GetItem*, GetAttachment*, SaveItem*, SaveAttachment*, DeleteItem*, GetHoursList*, GetTodaysHours*, SaveHours*, GetOrganization*, GetUserList*, GetUser*, SaveOrganization*, SaveUser*, GetWorkTypeList*, GetPurchaseOrderList*, SavePurchaseOrderList* )> <!ENTITY % project " projectKey CDATA #IMPLIED projectName CDATA #IMPLIED" > <!ENTITY % user " userKey CDATA #IMPLIED userID CDATA #IMPLIED eMail CDATA #IMPLIED" > <!ENTITY % user2 " userKey CDATA #IMPLIED userID CDATA #IMPLIED userEmail CDATA #IMPLIED" > <!ENTITY % category " categoryKey CDATA #IMPLIED categoryName CDATA #IMPLIED" > <!ENTITY % urgency " urgencyKey CDATA #IMPLIED urgencyName CDATA #IMPLIED" > <!ENTITY % status " statusKey CDATA #IMPLIED statusName CDATA #IMPLIED" > <!ENTITY % workType " workTypeKey CDATA #IMPLIED workTypeName CDATA #IMPLIED" > <!ENTITY % deadlineStatus " deadlineReachStatusKey CDATA #IMPLIED deadlineReachStatusName CDATA #IMPLIED" > <!ENTITY % enteredBy " enteredByKey CDATA #IMPLIED enteredByID CDATA #IMPLIED enteredByEmail cDATA #IMPLIED" > <!ENTITY % assignedTo " assignedToKey CDATA #IMPLIED assignedToID CDATA #IMPLIED assignedToEmail CDATA #IMPLIED" > <!ENTITY % date " year CDATA #IMPLIED month CDATA #IMPLIED day CDATA #IMPLIED hour CDATA #IMPLIED minute CDATA #IMPLIED second CDATA #IMPLIED" > <!ENTITY % organization " orgKey CDATA #IMPLIED orgName CDATA #IMPLIED" > <!ELEMENT Login EMPTY> <!ATTLIST Login userid CDATA #REQUIRED password CDATA #REQUIRED > <!ELEMENT GetProjectList EMPTY> <!ELEMENT GetCategoryList EMPTY> <!ATTLIST GetCategoryList %project;> <!ELEMENT GetPermissionList EMPTY> <!ATTLIST GetPermissionList %project;> <!ELEMENT GetStatusList EMPTY> <!ATTLIST GetStatusList %project;> <!ELEMENT GetUrgencyList EMPTY> <!ATTLIST GetUrgencyList %project;> <!ELEMENT GetHoursList EMPTY> <!ATTLIST GetHoursList count CDATA #IMPLIED > <!ELEMENT GetUserList EMPTY> <!ELEMENT GetWorkTypeList EMPTY> <!ELEMENT GetPurchaseOrderList EMPTY> <!ELEMENT GetTodaysHours EMPTY> <!ELEMENT GetItem EMPTY> <!ATTLIST GetItem itemKey CDATA #REQUIRED > <!ELEMENT GetProjectItems EMPTY> <!ATTLIST GetProjectItems %project; startIndex CDATA #IMPLIED count CDATA #IMPLIED > <!ELEMENT GetProject EMPTY> <!ATTLIST GetProject %project;> <!ELEMENT GetUser EMPTY> <!ATTLIST GetUser %user;> <!ELEMENT DeleteItem EMPTY> <!ATTLIST DeleteItem itemKey CDATA #REQUIRED > <!ELEMENT SaveItem (Item)> <!ELEMENT Item (DateDeadline?, DateStarted?, Description?, Comments?)> <!ATTLIST Item %project; %category; %urgency; %status; %deadlineStatus; %assignedTo; itemKey CDATA #IMPLIED itemTitle CDATA #IMPLIED suppressOnBehalfOf CDATA #IMPLIED productVersion CDATA #IMPLIED notifyCC CDATA #IMPLIED resolvedInVersion CDATA #IMPLIED > <!ELEMENT DateDeadline EMPTY> <!ATTLIST DateDeadline %date;> <!ELEMENT DateStarted EMPTY> <!ATTLIST DateStarted %date;> <!ELEMENT Comments (#PCDATA)> <!ELEMENT Description (#PCDATA)> <!ELEMENT SaveHours (Hours)> <!ELEMENT WorkDate EMPTY> <!ATTLIST WorkDate %date;> <!ELEMENT Hours (WorkDate+)> <!ATTLIST Hours hoursKey CDATA #IMPLIED %project; purchaseOrderKey CDATA #IMPLIED workTypeKey CDATA #IMPLIED itemKey CDATA #IMPLIED hours CDATA #REQUIRED %user2; description CDATA #IMPLIED > <!ELEMENT GetAttachment EMPTY> <!ATTLIST GetAttachment itemKey CDATA #REQUIRED fileName CDATA #REQUIRED > <!ELEMENT GetItems (Search?, Filter?)> <!ELEMENT Search EMPTY> <!ATTLIST Search text CDATA #REQUIRED scope (SELF | SUB | RELATED) "SELF" > <!ELEMENT Filter (ProjectFilter)> <!ATTLIST Filter loggedInUserOnly (TRUE|FALSE) "FALSE" > <!ELEMENT ProjectFilter (ItemStatus?, ItemsCreatedBy?, ItemsAssignedTo?)> <!ATTLIST ProjectFilter %project; > <!ELEMENT ItemsCreatedBy EMPTY> <!ATTLIST ItemsCreatedBy %user2;> <!ELEMENT ItemsAssignedTo EMPTY> <!ATTLIST ItemsAssignedTo %user2;> <!ELEMENT ItemStatus EMPTY> <!ATTLIST ItemStatus %status;> <!ELEMENT SaveAttachment (Contents, FileDateTime)> <!ATTLIST SaveAttachment itemKey CDATA #REQUIRED fileName CDATA #REQUIRED > <!ELEMENT FileDateTime EMPTY> <!ATTLIST FileDateTime %date;> <!ELEMENT Contents (#PCDATA)> <!ATTLIST Contents encoding CDATA #REQUIRED mimeType CDATA #IMPLIED xmlns:dt CDATA #IMPLIED dt:dt CDATA #IMPLIED > <!ELEMENT SaveProject (InheritSettingsProject?,Project)> <!ELEMENT InheritSettingsProject EMPTY> <!ATTLIST InheritSettingsProject %project;> <!ELEMENT Project (ParentProject?)> <!ATTLIST Project %project; projectComment CDATA #IMPLIED projectDescription CDATA #IMPLIED projectStatus (ACTIVE | INACTIVE) "ACTIVE" autoDeadlineDays CDATA #IMPLIED mandatoryDeadlines (TRUE|FALSE) "FALSE" useProductVersionField (TRUE|FALSE) "FALSE" useSourceReference (TRUE|FALSE) "FALSE" useResultReference (TRUE|FALSE) "FALSE" > <!ELEMENT ParentProject EMPTY> <!ATTLIST ParentProject %project;> <!ELEMENT ItemTemplate EMPTY> <!ELEMENT MeetingTemplate EMPTY> <!ELEMENT Script EMPTY> <!ELEMENT GetOrganization EMPTY> <!ATTLIST GetOrganization %organization;> <!ELEMENT SaveOrganization EMPTY> <!ATTLIST SaveOrganization %organization; orgDescription CDATA #IMPLIED > <!ELEMENT SaveUser (User)> <!ATTLIST SaveUser isNew (TRUE|FALSE) "FALSE" > <!ELEMENT User EMPTY> <!ATTLIST User %user; phone1 CDATA #IMPLIED phone2 CDATA #IMPLIED fax CDATA #IMPLIED title CDATA #IMPLIED firstName CDATA #IMPLIED lastName CDATA #IMPLIED password CDATA #IMPLIED > <!ELEMENT SavePermissionList (Permission+)> <!ATTLIST SavePermissionList %project;> <!ELEMENT Permission EMPTY> <!ATTLIST Permission %user2; grant (TRUE|FALSE) "TRUE" > <!ELEMENT SaveCategoryList (Category+)> <!ATTLIST SaveCategoryList %project;> <!ELEMENT Category EMPTY> <!ATTLIST Category %category; action (ADD|DELETE|CHANGE) "ADD" > <!ELEMENT SaveUrgencyList (Urgency+)> <!ATTLIST SaveUrgencyList %project;> <!ELEMENT Urgency EMPTY> <!ATTLIST Urgency %urgency; action (ADD|DELETE|CHANGE) "ADD" urgencyLevel CDATA #IMPLIED > <!ELEMENT SaveStatusList (Status+)> <!ATTLIST SaveStatusList %project;> <!ELEMENT Status EMPTY> <!ATTLIST Status %status; action (ADD|DELETE|CHANGE) "ADD" > <!ELEMENT SavePurchaseOrderList (PurchaseOrder+)> <!ELEMENT PurchaseOrder EMPTY> <!ATTLIST PurchaseOrder purchaseOrderKey CDATA #IMPLIED purchaseOrderName CDATA #IMPLIED %project; action (ADD|DELETE|CHANGE) "ADD" origManHours CDATA #IMPLIED status (ACTIVE|INACTIVE) "ACTIVE" > |