Large organizations typically manage data structures that include information relating to multiple customers. These organizations may generate reports from the data structures that are designed for internal purposes, but are not well-suited for customer use.
The following detailed description refers to the accompanying drawings. The same reference numbers in different drawings may identify the same or similar elements.
Systems and/or methods described herein may obtain an input report in Extensible Markup Language (XML) format and obtain a configuration file including a schema that defines output requirements for the input report. The systems and/or methods may identify, based on the configuration file, a parent node in the input report and read records associated with the parent node. The systems and/or methods may extract data from the records, associated with the parent node, that correspond to the schema and generate, from the extracted data, an output report in a flat file format.
In implementations described herein, a data processing center 120 may receive XML input files 110 for particular customers and retrieve corresponding configuration file 130. Data processing center 120 may apply information from the retrieved configuration file 130 to a particular XML input file 110 to generate flat format file 140. Configuration files 130 may also provide instruction for enrichment, translations, calculations, and formatting when converting data from XML input files 110 to flat format output files 140. Enrichment of data may include, for example, data processing center 120 applying code plug-ins that provide specific functions and that can be dynamically invoked. The flat format file 140 may be, for example, a delineated file, a coma-separated values (CSV) file, or another plain text file that can be retrieved (e.g., by a respective customer) and imported into a variety of applications. Any of a variety of delimiters (e.g., tabs, commas, or another character or sequence of characters) for flat format file 140 may be included within flat format file 140 according to a schema (e.g., a schema included in one of configuration files 130). Particularly, flat format file 140 may provide a column and row format that can be viewed and/or manipulated using, for example, a spreadsheet application rather than a nested XML format.
Service provider network 205 may generally include network devices to manage equipment and/or services, such as telecommunications equipment/services, to customers. Service provider network 205 may include a local area network (LAN), an intranet, a private wide area network (WAN), etc. In one implementation, service provider network 205 may implement one or more network connections or Virtual Private Network (VPN) connections for providing communication between, for example, any of enterprise server 210, internal file storage 220, configuration tables 230, output flat file storage 240, and customer interface server 250. Service provider network 205 may be protected/separated from other networks, such as network 270, by a firewall. Although shown as a single element in
Enterprise server 210 may include one or more server entities, or other types of computation or communication devices, that are capable of performing analysis and/or converting files stored, for example, in internal file storage 220. Enterprise server 210 may retrieve a data file (e.g., an XML file) from internal file storage 220 and a corresponding configuration table from configuration tables 230. Based on instructions in a configuration table, enterprise server 210 may analyze the data file and generate an output flat file (e.g., a CSV file). Enterprise server 210 may store the output flat file, for example, in output flat file storage 240.
Internal file storage 220 may include a database or another memory component to store files that are responsive to customer requests. For example, internal file storage 220 may include customer-specific information extracted from a larger database of multiple customers, such as main database 225. As a particular example, internal file storage 220 may include an XLM file, extracted from a configuration management database, with inventory information for a particular customer.
Main database 225 may include a database or another memory component to store data relating to multiple customers and/or systems. For example, main database 225 may include a configuration management database, inventory database, sales database, or another type of database from which reports (e.g., customer or system-specific reports) may be extracted.
Configuration tables 230 may include a database or another memory component to store files that provide configuration settings for different customers. For example, configuration tables 230 may include, for each customer, one or more XML files that define a flat file (e.g., CSV) structure, processing classes, and source data points for the particular customer. The files in configuration tables 230 may be generated by or for a customer before the customer places a request for information. For example, a configuration table for a particular customer may be generated and used to format repeated requests for information from internal file storage 220/main database 225.
Output flat file storage 240 may include a database or another memory component to store files generated by enterprise server 210. For example, output flat file storage 240 may store data files in CSV formats for particular customers (e.g., based on one or more files from internal file storage 220 and configuration tables 230). Files in output flat file storage 240 may be retrieved by customers (e.g., using customer device 260) via a secure communication protocol. In one implementation, output flat file storage 240 may include a shared platform that may permit customers to retrieve particular files using SSH File Transfer Protocol (SFTP) procedures.
Customer interface server 250 may include one or more server entities, or other types of computation or communication devices, to provide an interface to customers (e.g., customer device 260). In one implementation, customer interface server 250 may receive a request from customer device 260 to retrieve a particular file (e.g., an inventory file). The request may, for example, cause service provider network 205 to generate a responsive XML file for internal file storage 220. The responsive XML file may be used by enterprise server 210 to generate a corresponding flat file for output flat file storage 240. In another implementation, customer interface server 250 may provide a user interface to solicit information to generate a customer-specific configuration table to store in configuration tables 230.
Customer device 260 may include a computational or communication device. Customer device 260 may include, for example, a desktop computer, a laptop computer, a personal digital assistant (PDA), etc., used for general computing tasks. Customer device 260 may be configured to communicate with devices in service provider network 205 (e.g., via network 270).
Network 270 may include a local area network (LAN); an intranet; the Internet; a wide area network (WAN), such as a cellular network, a satellite network, a fiber optic network, a private WAN, or a combination of the Internet and a private WAN; etc., that is used to transport data. Although shown as a single element in
In
Bus 310 may permit communication among the components of device 300. Processor 320 may include one or more processors or microprocessors that interpret and execute instructions. In other implementations, processor 320 may be implemented as or include one or more application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), or the like.
Memory 330 may include a random access memory (RAM) or another type of dynamic storage device that stores information and instructions for execution by processor 320, a read only memory (ROM) or another type of static storage device that stores static information and instructions for processor 320, and/or some other type of magnetic or optical recording medium and its corresponding drive for storing information and/or instructions.
Input device 340 may include a device that permits an operator to input information to device 300, such as a keyboard, a keypad, a mouse, a pen, a microphone, one or more biometric mechanisms, and the like. Output device 350 may include a device that outputs information to the operator, such as a display, a speaker, etc.
Communication interface 360 may include any transceiver-like mechanism that enables device 300 to communicate with other devices and/or systems. For example, communication interface 360 may include mechanisms for communicating with other devices, such as other devices of network 200.
As described herein, device 300 may perform certain operations in response to processor 320 executing software instructions contained in a computer-readable medium, such as memory 330. A computer-readable medium may include a non-transitory memory device. A memory device may be implemented within a single physical memory device or spread across multiple physical memory devices. The software instructions may be read into memory 330 from another computer-readable medium or from another device via communication interface 360. The software instructions contained in memory 330 may cause processor 320 to perform processes described herein. Alternatively, hardwired circuitry may be used in place of or in combination with software instructions to implement processes described herein. Thus, implementations described herein are not limited to any specific combination of hardware circuitry and software.
Although
Input file retriever 410 may include hardware and software components. In one implementation, input file retriever 410 may identify and retrieve a data file, such as an XML report file, for a particular customer. An internal file (e.g., an XML report) may be generated for example, in response to a customer inquiry and/or as part of a scheduled reporting procedure. Input file retriever 410 may retrieve the appropriate internal file (e.g., from internal file storage 220) associated with a particular customer.
Configuration file matcher 420 may include hardware and software components. In one implementation, configuration file matcher 420 may match a particular configuration file with a particular customer. For example, based on a customer identified in the internal file retrieved by input file retrieved 410, configuration file matcher 420 may find the appropriate configuration file from configuration tables 230 associated with the particular customer.
Sub-process manager 430 may include hardware and software components to process an internal file in relation to a particular customer configuration file. Generally, output file generator 440 may parse individual records of the internal file to convert each record into an output record. In one implementation, sub-process manager 430 may match class definitions and/or data manipulation processes in the customer configuration file with data elements from the input file. Each of the executed sub-process will modify the data from the vendor input file. Class definitions may be used, for example, to combine information from multiple fields (from an input file) into a single output field. Data manipulation processes (“data manipulators”) may match particular fields with processes (e.g., code plugins) to alter and/or enhance data from the input file. For example, sub-process manager 430 may convert data (e.g., from English to metric units), map one type of data to another (e.g., using a lookup table, dictionary, etc.), or perform other data manipulations. According to an implementation herein, sub-process types may include, for example, primary, xpath, mxpath, constant, conca, list, and translate. Each of the executed sub-processes may return a true/false indicator as a signal to continue the process for the current element or to abort to the next element.
Names of sub-processes 500 that may be included in customer configuration files 130 and may be executed by sub-process manager 430 are described further in connection with
Primary process 505 may find a primary key element and may determine if the primary key element is a duplicate. A primary key element may include, for example, a data item of interest to a customer and to which other data fields may relate. As an example, a primary key may include information about a particular router with other relating data fields including a name, manufacturer, installation location, configuration, lifecycle status, stock number, etc. Primary process 505 may detect duplicate elements and exclude the duplicate elements from the output report. If not a duplicate, the primary key element may be processed for insertion into the output file.
Xpath process 510 may find a designated element in the XML input file (e.g., XML input file 800). These elements may repeat through parent node detail records. Mxpath process 515 may find a designated element in the XML/MXML input file (e.g., XML input file 700). These elements are considered the detail record for the parent node.
Constant process 520 may insert a designated value as a constant repeating through all records of the parent node. For example, constant process 520 may provide a designated customer prefix, group name, etc. associated with a particular field.
Concatenation process 525 may allow concatenation of values in a single field. Concatenation process 525 may use field types from other processes, such as constant, translate, xpath, and/or xmpath to form, for example, a single string value.
List process 530 may create a comma separated list with the result of the provided xpath into a quoted field. List process 530 may assume multiple results are returned from an xpath process.
Translate process 535 may provide a value to value mapping with the use of a mapping table or dictionary. For example, translate process 535 may match a value (e.g., a vendor stock number) from an input file to a corresponding customer value that may not be available in main database 225 (e.g., a customer part number). The mapping table or dictionary may be included, for example, within configuration tables 230 or a separate database.
Although
Referring again to
Although
As shown in
Process 600 may also include receiving a vendor input file (block 610). For example, enterprise server 210 (e.g., input file retriever 410) may receive a data file, such as an XML report file, for a particular customer. A portion of an exemplary XML input file 800 is included in
A first input file record may be read (block 615) and the schema field definition may be retrieved from the configuration file (block 620). For example, enterprise server 210 (e.g., sub-process manager 430) may identify a first record in vendor input file 800. Enterprise server 210 may then match the record with a corresponding schema from configuration file 700. As shown in
It may be determined if a parent node is found in the in the input file record (block 625). For example, enterprise server 210 may determine if the XML input file 800 includes the parent node indicated in customer configuration file 700. The parent node must be in the list of products from configuration file 700 to be included in the eventual flat file output generated by enterprise server 210. If the parent node is not found in the input file record (block 625—NO), process 600 may return to block 615 to read a next input file record.
If the parent node is found in the input file record (block 625—YES), process 600 may read all of the parent node record (block 630). For example, enterprise server 210 (e.g., input file retriever 410) may extract an entire sub-XML section (e.g., relating to the parent node) from XML input file 800 for processing independently.
Process 600 may further include obtaining process type definitions (block 635). For example, enterprise server 210 (sub-process manager 430) may get a list of classes and data manipulators from customer configuration file 700. Class definitions may be used, for example, to combine information from multiple fields (from input file 800) into a single output field. Data manipulators may match particular fields with processes (e.g., code plugins) to alter and/or enhance data from input file 800. In the implementation of
An output record may be generated to a customer file (block 640). For example, enterprise server 210 (e.g., output file generator 440) may generate a CSV record to a file (e.g., “INV_VBS_DATA.TXT”) based on the schema data. In one implementation, the output file may be formatted to delineate columns associated with particular elements and rows corresponding to fields for the particular elements. In another implementation, the output file may be formatted to delineate rows associated with particular elements and columns corresponding to fields for the particular elements. The output file may be stored, for example, in output flat file storage 240 or another location where the output file can be retrieved by the customer.
A portion of an exemplary flat format output file 900 is included in
Returning to
As described above, systems and/or methods may convert an XML report file into a flat output file format according to customer preferences. The systems and/or methods may also perform additional processing to provide an output file with enriched data beyond the original XML report file. In one implementation, the systems and/or methods may retrieve, one or more remote systems, an XML input report and a configuration file including a schema that defines output requirements for a particular customer. The systems and/or methods may identify, based on the configuration file, a parent node in the input report, read records associated with the parent node, and extract data from the records associated with the parent node that correspond to the schema. The systems and/or methods may generate an output file, for the particular customer, that includes the extracted data in a delimited file format.
In the preceding specification, various preferred embodiments have been described with reference to the accompanying drawings. It will, however, be evident that various modifications and changes may be made thereto, and additional embodiments may be implemented, without departing from the broader scope of the invention as set forth in the claims that follow. The specification and drawings are accordingly to be regarded in an illustrative rather than restrictive sense. For example, while a series of blocks has been described with respect to
It will be apparent that different aspects of the description provided above may be implemented in many different forms of software, firmware, and hardware in the implementations illustrated in the figures. The actual software code or specialized control hardware used to implement these aspects is not limiting of the invention. Thus, the operation and behavior of these aspects were described without reference to the specific software code—it being understood that software and control hardware can be designed to implement these aspects based on the description herein.
Further, certain portions of the invention may be implemented as a “component” or “system” that performs one or more functions. These components/systems may include hardware, such as a processor, an ASIC, or a FPGA, or a combination of hardware and software.
No element, act, or instruction used in the present application should be construed as critical or essential to the invention unless explicitly described as such. Also, as used herein, the article “a” and “one of” is intended to include one or more items. Further, the phrase “based on” is intended to mean “based, at least in part, on” unless explicitly stated otherwise.