As mentioned in the DomainNLP page in AnySupplier, the development of a natural language query grammar plays a key part in the XASP design process. Note that while we refer to a grammar, the version of VB/ELF we are currently working with doesn't use that term, at least not we mean it. What we mean is the result of the adaptation of VB/ELF to a specific database, i.e. the whole shebang, analysis, lexicon, etc. stored in a special instance of AnyFront which is re-named XASPNLP.MDE. You should maintain this instance of AnyFront seperately from any that you use for random batching and it should have the full E-Catalog content in addition to the VB/ELF grammar(s). We say grammars since we mean this construct to be compositive, with a base component matching the generic core of XASP that's reused and included in the enterprise specific grammars. \subsection{The base E-Catalog grammar} \subsection{The enterprise specific grammar} %--------------------------------------------------------------------- \chapter{Content Proofing using the AnySupplier Web} %--------------------------------------------------------------------- Content proofing involves a continuous cycle of using the AnyFront app as outlined in the previous chapter and inspecting the content in the web app. The generic web app installed for use in this content proofing process is the assumed web in this chapter. It is important to understand that you can use the AnySupplier web for this purpose even though it is very different from the final web you are producing. The sample data is meant to illustrate this. \section{Creating the Master Web} As distributed, the AnySupplier web is a complete pre-existing VisualInterdev (VI) project. If you were creating a new project, VI would create the master web under IIS for you. Since the project already is developed, you need to create the web by use of the IIS Service Manager (IISM) and/or the deployment explorer in VI. Some things will need to be set/verified in the IISM properties sheet: \begin{itemize} \item After creation, the entry for the AnySupplier or AnySupplier2 web should appear as a package icon not a folder under the main web site. This indicates MTS is properly installed and operating on the site. \item In the Properties pop-up ... \begin{itemize} \item Execute permission should be set for the application in the directory tab. Press the configuration button and in the Application Configuration properties, App Mappings tab make sure .pl and .plx are present with the paths set to your Per executables as directed in the ActiveState documentation. \item In the documents tab, the default document should be set to default.asp and enabled. \item Adjust directory security per your requirements. \end{itemize} \end{itemize} You shouldn't have to alter HTTP Headers or Custom Errors. In VI, we will assume from this point on that you work in master mode so that changes made to the local web created from the distribution zip will automatically apply to the master web. \section{Adjusting global.asa} Some changes may need to be made to global.asa to reflect your choices in creation of the database. In the VI Project Explorer, open global.asa by clicking on it. You will see parameters related to ODBC DSN, and these should be set to what you used in creating the E-Catalog and in the Backend Login form in AnyFront. You will also need to inspect and adjust as needed the ECATALOG data environment under global.asa as indicated in \S 1.3. Of course there's a lot more to getting a working platform than we've sketched in this document, but if everything is configured right and the database has been built successfully you're now ready to use the web app for content proofing of the sample data. \section{Using the Leaf Templates} The term ``Leaf Templates'' refers to the lowest level of content display in the web app. These ASPs have the names ``SimpleProductVariants'' which displays tables of data, normally groupings of products, and ``VerticalProductAtttribution'' which is a display of info on a single product. These pages are the end of the story of configuring and making the web app operational so to speak. You can expect at least a few problems in getting them working right due to configuration snafu in the MS environment. See the next chapter for troubleshooting hints. Once, the web comes up with the main portal page properly however, you should be able to proof content with the web app as follows: \begin{itemize} \item Go to ``Browse-Shop'' the top level of main content selector. \item You should see all the sections and virtual volumes defined. \item When you have made a sufficiently complete selection you're automatically taken to the ``Proof Content'' page which allows you to select the leaf template you wish to view. \item Select from the Subgroup column to view ``SimpleProductVariants'' and from the ``SKU Object'' column to view ``VerticalProductAttribution'' \end{itemize} In this way by inspection you can tell what you would need to do to change structure of the Catalog via AnyFront or modify the raw data content of the input spreadsheets or images. The process performed in bringing up the sample site is essentially the same that would be performed in a customization except that data collection and proofing has already been performed on the sample data. %--------------------------------------------------------------------- \chapter{About the Sample Data} %------------------------------------------------------------------- The sample price and image data is simple, each of the two spreadsheets is just two columns, one of database object ids, and one of prices for price data and one of image file names for the image data. The mechanism supporting this is general and you can introduce any general attribute by defining a template variable for it and then using it in a template and mapping data in with AnyFront. The table data is more complicated. There are 3 groups of table data in the sample data: the content of the USDA tables, the tables defining the sample vendor's service offerings, and 3 tables for my 3 projects. The latter are included as an example of a simple 1 level catalog section. The USDA tables are illustrative of reduction of content from print media tables. Finally the CNS sample tables show how products can be interrelated or composed using data in other tables since the CNS meal are composed of items from the USDA handbook table No. 1. %--------------------------------------------------------------------- \chapter{Troubleshooting and Common Problems} %------------------------------------------------------------------- Here's a list of problems we've encounter and suggestions for how to deal with them. \section{When I start the AnyFront app an illegible pop-up appears and the app doesn't run.} Are you using a a video resolution of 800x600 or less? I've tried setting the resolution on the original development system to a low res. and then trying the resultant app on a low res machine such as a laptop, but it doesn't seem to help. A minimum res of 1024x768 may be required. \section{When I start the AnyFront app it complains about missing objects/libraries} If you have a machine configured as described in \S 1.2 and have installed all the stated components this shouldn't happen. \section{When I try to login to the E-Catalog in AnyFront, I get an error pop-up} There can be a number of problems here: \begin{itemize} \item The XASP Libraries must be installed before you can access the backend database. \item The parameters in the login dialog must be set to properly reflect your choices when building the database and your current environment/identity. \item The database itself must be running and the ODBC drivers appropriate for your DBMS must be accessible. \end{itemize} \section{When I start the web app in a Browser, all I get is a message about invalid object} The XASP libraries must be installed. They must also have been given the proper permissions in DCOM Configuration. Also upon, first access the database will be accessed, so if it isn't running the web app can't start properly. \section{When I start the web app, there are no navigational controls or backgrounds are blank} Check that the master web has the zero subdirectory populated under the ``_Themes'' subdirectory. \section{I was sending a large batch of data to the Catalog and an error popped up} If this happens after it seems to process some data the most likely cause is that the transaction log space has been exhausted. Expand the allocation an try again. \section{After selecting a table in AnyFront, I got a pop-up about a problem communicating with the OLE Server} This is normally because too many Excell instances are running. Restarting the utility should clear the problem. You may also want to go into the Task Manager and kill any Excell zombies. \section{How do I make changes to a table/Use regular Excell within AnyFront?} When a spreadsheet object is displayed in AnyFront, right clicking on it will give you a menu which open Excell on the data. However it is generally better to edit the file outside of AnyFront in regular Excell since in the embedded form you need to pay careful attention to specifying the path of the file embedded Excell is working on. If you do so, you can use Excell successfully within AnyFront. %----------------------------------------------------------------- %----------------------------------------------------------------- \part[Part Two]{Your Customization} The intent in this part of the document is to give some guidance to those who buy the package and perform thier own customizations, to give some insight into how I perform customizations, and to assist those who will be maintaining a delivered customization. No distinction is made in the presentation of material for these different audiences. \chapter{A Customization PAQ} What follows is a list of Prospectively Asked Questions and Answers about various customization issues. \section{What about design issues? Is there an implicit design in XASP/AnySupplier?} Addressing the second question first, the answer is yes and no. The \emph{AnySupplier} web app, being open-source has exactly the same generality as the underlying infrastructure, there is a general design but it's modifiable in customizations. In the overall XASP package only the \emph{AnyFront} utility isn't open source, so this also applies to the overall package. AnyFront doesn't need to be since it simply serves a utility function (albeit a critical one) in the building of the E-Catalog. The design of \emph{AnySupplier} is specifically that of a generic E-Commerce site, thetically and explicitly a template E-Commerce app. This is in contrast to e.g. the SSC samples, which while they are high quality as samples, are simplistic. The essential anti-pattern here is failure of abstraction. For the first question, the answer is that the same design issues apply in using this package as in any systems development. XASP 2 and later facilitate this by providing some automation for instantiation of the template app, but this only facilitates it doesn't obviate the need for good design and development practices. \section{Can I use the SSC carting and other Wizard generated pages?} Yes, but you will need to have the AUO directed to the E-Catalog to get customer and product info. While we will provide support for this, we don't as such support the MS generated code and there likely will be tweaks to make it work. In general, subject to the proviso of the previous paragraph, every part of the site builder generated site foundation should work. You can also mix the two, having some stuff in the regular SSC tablespace and some in the E-Catalog, but we don't support this as part of the product. \section{How do the AnySupplier libs relate to the OPP} We have a single point of interaction/transfer with the SiteServer Commerce Pipeline. We prepare a complete order and then submit it to the pipeline. So any business rules implemented in XASP are applied via the Perl scripts of the XASP COM libraries. In principle, you could spread your rules across this boundary put some stuff in pipeline components and some in the XASP libs. There would be nothing wrong with this as long it's a clean and logical seperation. For example, I've used the CyberCash CRPC to do transactioning in customizations and it has it's own set of rules (i.e. those of the transactioning vendor). Keep in mind though, that if you use the OPP instead of the Perl COM libraries you will lose the platform independence. which is a design feature and purpose of using the Perl libs. %----------------------------------------------------------------- %----------------------------------------------------------------- \part[Part Three]{Appendices} \chapter{Glossary} \begin{itemize} \item{OBI} Open Buying on the Internet, names an organization and a standard for corporate purchasing and supply via the Web. \item{OPP} Order Processing Pipeline, the central SiteServer Commerce transactioning feature. \item{SSC} Site Server Commerce Edition. \end{itemize} \chapter{Generic System Development Journal} \begin{rawhtml} The generic systems development journal is served from Unix hosts in my domain. Here's a Link.