TMW Smartlinkâ Data Exchange Agent (TMWDX)

TMW Smartlinkâ Data Exchange Agent (TMWDX)

<p> TMW SmartLink Data Exchange Agent (TMWDX) </p><p>Version 1.6 </p><p>TMW Proprietary Information TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>Revision History Date Version Description Author 3/17/2005 1.0 Initial Document jday 3/28/2005 1.3 Revised to reflect usability jday modifications in the TMWDX application. 8/5/2005 1.6 Revised for additions to the TMWDX jday command set. Add updated images. </p><p>Company Proprietary TMW Systems, Inc. 2018 2 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>Table of Contents</p><p>TMW SmartLink Data Exchange Agent (TMWDX)...... 1 User Guide...... 1 Version 1.6...... 1 TMW Proprietary Information...... 1 Revision History...... 2 Introduction...... 4 Application Installation...... 5 Application Overview...... 11 Setup...... 14 Source Tab...... 15 Work Tabs Associated with Stored Procedures...... 16 Import Types...... 18 Field Names...... 20 Lookups...... 21 Log Messages...... 22 Email Messages...... 23 Settings...... 24 Scripting...... 26 Debugging...... 36 Operation...... 38 Logging...... 39 Appendix A – Custom Date-Time Formats...... 40 Appendix B - Expressions...... 46 EXPRESSION SYNTAX...... 46 USER-DEFINED VALUES...... 47 STRING OPERATORS...... 48 WILDCARD CHARACTERS...... 48 FUNCTIONS...... 49 CONVERT...... 49 LEN...... 49 ISNULL...... 49 IIF...... 50 TRIM...... 50 SUBSTRING...... 50 Appendix C – DX Scripting Command Tips and Tricks...... 51 REGEX...... 51 Link...... Error! Bookmark not defined. PARSE...... 56 SENDFILE...... 58</p><p>Company Proprietary TMW Systems, Inc. 2018 3 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>Introduction This document describes the setup and operation of the TMW SmartLink Data Exchange Agent (TMWDX). TMWDX is a Microsoft VB .NET based application used to exchange data with external systems and the TMWSuite database. It uses a script to translate data in delimited or fixed position flat files, or in Microsoft Excel spreadsheets. A typical use is to import orders for transportation services into TMWSuite. The TMWDX agent is not dependent on the TMWSuite database. It operates with MS SQL 2000 or greater database stored procedures. TMWDX can replace the TMW Microsoft Excel-based Order Import Toolkit, with the appropriate script.</p><p>Company Proprietary TMW Systems, Inc. 2018 4 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>Application Installation</p><p>NOTE: TMWDX requires that the .NET framework 1.1 be installed on the computer on which it will run. As well, the TMWDX.sql file must be applied through MS Query Analyzer to the TMWSuite database. The TMWDX.sql will be found in the DX folder in the distribution. Application installation itself is accomplished with a standard Microsoft Windows installation script, Setup1.msi in the DX folder. Double-clicking on this file starts the installation. When the title page displays, hit “Next.” Clicking “Cancel” will cancel the installation.</p><p>Company Proprietary TMW Systems, Inc. 2018 5 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>If the installation options displayed are satisfactory, click “Next”. Clicking “Cancel” will cancel the installation. Clicking “Back” will go back to the previous step.</p><p>Company Proprietary TMW Systems, Inc. 2018 6 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>Click “Next” to proceed with the installation on the next displayed page. Clicking “Cancel” will cancel the installation. Clicking “Back” will go back to the previous step.</p><p>Company Proprietary TMW Systems, Inc. 2018 7 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>Installation progress is then displayed. Installation takes only a few seconds. If you wish to cancel, click the “Cancel” button on the page.</p><p>Company Proprietary TMW Systems, Inc. 2018 8 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>When the installation is complete, a completion screen will be displayed. Click “Close”. </p><p>Company Proprietary TMW Systems, Inc. 2018 9 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>When the TMW Data Exchange application is run for the first time, the connection screen will be displayed. Once a good connection to the TMWSuite database is confirmed, the application will automatically start.</p><p>Company Proprietary TMW Systems, Inc. 2018 10 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>Application Overview</p><p>The figure below shows the general flow for order processing in TMWDX.</p><p>TMWDX is a script-driven “robot” that executes stored procedures:</p><p>1. Data from an external source is placed in the “Source” tab. 2. The script in the “Setup” tab processes the “Source” data one row at a time. 3. The script moves data to the various tabs that act as holding tanks. 4. At the appropriate point in the script, an “EXEC tabName” command is issued. 5. The data in the current row of the tab referenced in the “EXEC” are used as the parameters for the stored procedure associated with the tab. 6. Successive execution of the various tabs put the data on the database. </p><p>Company Proprietary TMW Systems, Inc. 2018 11 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>TMWDX is similar to an Excel workbook. It has tab pages with grids like spreadsheets to hold the script, settings, incoming data, and outgoing data. Under the “Edit” menu item, clicking on “Edit/Edit Setup” shows the script and other settings. </p><p>Scripts are typically loaded from base scripts for various import types into SQL tables, and modified to suit the particular application. The following figure shows a sample script.</p><p>Company Proprietary TMW Systems, Inc. 2018 12 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>If “Edit Setup” is not checked, the setup is hidden, as in normal operation, shown in the next figure:</p><p>For the most typical imports, after a standard script is installed and modified for any custom needs, standard data exchange stored procedures are associated with the tabs to hold imported data. </p><p>After setup, the import can run unattended. There is both an error log table, and an email messaging system included in the import to report on errors and other significant events as they occur.</p><p>Company Proprietary TMW Systems, Inc. 2018 13 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>Setup</p><p>The first tab shows as “Status” when not in setup mode. If “Edit Setup” is checked in the Edit menu, the tab shows as “Script”, displaying current processing script. When other items are selected from the “File” menu item, the records associated with that item are displayed in the tab, and the tab name changes accordingly. Setup items from the File menu include:</p><p> Import types,  Field names to clearly identify the data fields being imported,  Scripts to run processing and translation,  Lookups for string translation,  Log message templates, including those for error messages.  SMTP Mail message templates.  Settings, and  Cross references (xref) (work in process). </p><p>Whenever data is changed in the grid in the setup tab, the Update Table button must be clicked to save the settings. This button changes color to red when an update is needed. During the update, the button is yellow. The button is shown circled in red in the figure below:</p><p>Company Proprietary TMW Systems, Inc. 2018 14 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>Source Tab</p><p>The “Source” tab contains a data grid displaying the current data to import. The script works against this data.</p><p>Company Proprietary TMW Systems, Inc. 2018 15 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>Work Tabs Associated with Stored Procedures</p><p>These tabs are the temporary destination for the data. Each data field copied into a cell in the data grid in a given tab represents a parameter for stored procedure associated with at tab. </p><p>When the script invokes an EXEC with a particular tab name, it executes the SQL stored procedure using the parameters contained in current row in that tab. There is any EXEC …ALL command that will execute all the rows.</p><p>In the figure below, the drop down box is used to select the stored procedure to be tied to that tab. When a procedure is selected, the tab automatically refreshes with the stored procedure’s parameters are column headers. The application automatically remembers the selection. It is not necessary to click the “Update table” button.</p><p>Any of the Work tabs can be renamed through the Edit menu, by selecting the Edit tab name menu item. The tab name is then used as a reference to that destination in the script. These tab names are remembered until changed, and are stored in the Settings table.</p><p>Company Proprietary TMW Systems, Inc. 2018 16 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>Any of the Work tabs can be renamed through the Edit menu, by selecting the Edit tab name menu item. The tab name is then used as a reference to that destination in the script. These tab names are remembered until changed, and are stored in the Settings table.</p><p>Type in the new name and click the “GO” button, and the name changes:</p><p>Company Proprietary TMW Systems, Inc. 2018 17 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>Import Types</p><p>Import types tie all the parts for each type of import together. Specifying at least one import type is mandatory.</p><p>Set up Import Types by selecting the “Edit/Edit Setup” menu item, then selecting the “File/Import Types” item.</p><p>When more than one import type has been set up, each can be selected through the drop down box circled in red in the figure below.</p><p>Creating an import type consists of selecting “Edit/Edit Setup,” then “File/Import Types.” </p><p>Company Proprietary TMW Systems, Inc. 2018 18 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>A screen like that below is displayed.</p><p>You must fill in the parameters for the new import as in the table below. dx_Import_Types Used to store various import configurations dx_importid varchar(8) Import ID that ties to other items, uniquely identifying an import dx_importname varchar(255) name of import ("EDI 204,” "gLOG IMPORT,” "MANUGISTICS", etc.) dx_importtype varchar(8) FLAT dx_recordtype varchar(8) ORDER dx_location varchar(255) origin location of data (ODBC connection string, file path, etc.) dx_query varchar(255) origin location subset of data (file extension, table name, sheet name, etc.) dx_headersincluded char(1) Y or N to indicate if data starts with a row of field names dx_archive bit Check to enable archiving of parsed records to dx_Archive database table dx_archivedir varchar(255) Directory path to archive directory Check to enable filewatch on a folder—as opposed to polling (work in dx_filewatch_enabled bit progress dx_polling_enabled bit Check to enable polling-recommended method dx_polling_minutes float Number of polling minutes. Decimal fractions are allowed dx_timecheck_seconds bigint How often to check the time for polling. dx_import_file_mask varchar(50) Mask used for input files dx_delimiters varchar(30) Delimiters for delimited flat files dx_faileddir varchar(255) Directory path to failed directory dx_auto_purge bit Check for auto-purge of history</p><p>Company Proprietary TMW Systems, Inc. 2018 19 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>Field Names</p><p>The Fields setup is used to name and define the columns specifying the format of the data coming in. This data will be placed in the Source tab, and the columns there will be labeled with the column names specified. </p><p>Set up Fields by selecting the “Edit/Edit Setup” menu item, then selecting the “File/Field Names” item.</p><p> dx_FieldDefinitions used to translate and name fields in files dx_importid varchar(8) Import ID that ties to other items, uniquely identifying an import unique ID to identify translation ("204_01", "204_02", "HEADER", "STOP REC", "FREIGHT", dx_recordtype_name varchar(8) etc.) dx_fielddef_start int field number (or starting character position for flat files) dx_fielddef_length int length of characters to parse (only used for flat files) dx_fielddef_type varchar(20) SQL type of field ("int", "datetime", "char(8)", "money", etc.) dx_fielddef_name varchar(40) User-defined name of field ("Shipper Name", "Weight", "Pickup Date", etc.)**</p><p>Company Proprietary TMW Systems, Inc. 2018 20 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>Lookups</p><p>Lookups substitute one data value for another.</p><p>Set up Lookups by selecting the “Edit/Edit Setup” menu item, then selecting the “File/Lookups” item.</p><p> dx_Lookup used to lookup a value and return a different user-definable value Import ID that ties to other items, uniquely identifying an dx_importid varchar(8) import dx_lookuptable varchar(40) name of common list of values (called from dx_Transforms) dx_lookuprawdatavalue varchar(255) value contained in raw data dx_lookuptranslatedvalue varchar(255) value to return </p><p>Company Proprietary TMW Systems, Inc. 2018 21 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>Log Messages</p><p>The templates in the Log Messages setup are used to translate return codes, successful or failed, into messages. The dx_errormsg field contains a message string with embedded column names enclosed by brackets (“{}”) to specify where values from the tab name in the dx_command field should be inserted in the message.</p><p> used to translate return codes dx_Message into messages***** dx_command varchar(40) dx_returncode Int dx_errormsg Text *****Messages aren't necessary error messages, but success messages as well.</p><p>Company Proprietary TMW Systems, Inc. 2018 22 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>Email Messages</p><p>The dx_messagebody field contains a message string with embedded column names enclosed by brackets (“{}”) to specify where values from the tab name in the dx_command field should be inserted in the message.</p><p> dx_SMTP used to create an SMTP message dx_importid varchar(8) Import ID that ties to other items, uniquely identifying an import dx_SMTPaddress varchar(15) IP address or name of the SMTP server Internal name of message ("Log Message", "New Company Added"), not subject of e- dx_messagename varchar(40) mail dx_messageto Text Email address(es) dx_messagefrom Text Email address(es) dx_messagesubject Text Email subject dx_messageintro Text Email intro dx_messagebody Text Email body (can contain data fields and be repeated) dx_messagefooter Text Email footer dx_messagesignature Text Email signature</p><p>Company Proprietary TMW Systems, Inc. 2018 23 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>Settings</p><p>Several items are controlled from the Settings table, including tab names, the specification of user variables and user defined commands. The screen below shows the settings table.</p><p>The Application column is always TMWDX. The settingSection column is the import id. </p><p>If the settingKeyword is “UserVars”, the settingValue will appear as a column in the UserVars tab once the Update Table button is clicked, and TMWDX is restarted. The setting Default column will set the default value for this variable.</p><p>If the settingKeyword is “UserCommands”, the settingValue will become a new command invoked from the script. The setting Default column will set the SQL stored procedure to invoke when this command is encountered in the script. The new command will be effective once the Update Table button is clicked, and TMWDX is restarted. </p><p>Company Proprietary TMW Systems, Inc. 2018 24 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>The entries with a settingKeyword beginning with “Work” and ending with ProcName are the records of the stored procedures, shown in the settingValue column, associated with the respective work tabs. These are maintained normally by selecting a stored procedure from the drop-down list on the tab with which you want the stored procedure linked.</p><p>The entries with a settingKeyword beginning with “tpWork” are the names, in the settingValue column, of the tabs set through “Edit/Edit Tab Name” on the menu bar.</p><p>There are special settings to influence TMWDX behavior.</p><p>The settingKeyword PreImportTask, with a task specified in the setting value field runs that task prior to importing data.</p><p>The settingKeyword PostImportTask, with a task specified in the setting value field runs that task after importing data.</p><p>The settingKeyword AddArchDTTM, with a setting value of a date time format (see appendix A), will append that date time to the import file name when it moves it to the archive folder, should an archive folder be specified.</p><p>For example, with an import file of InFile and a datetime format of _yyyyMMdd_HHmmss_fff, the InFile is archived as InFile_20051005142133_325, if it was archived at 14:21:33.325 on October 5, 2005.</p><p>Company Proprietary TMW Systems, Inc. 2018 25 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>Scripting</p><p>Imports are carried out under the control of scripts for each process. These scripts contain simple commands to: These commands: </p><p> Move data from the “Source” tab page to the other stored procedures tab pages,  Test the data on any tab page,  Convert data with expressions,  Look up substitution for data fields  Control the flow of script commands,  Change the current position on each page,  Execute the stored procedure associated with each tab page.  Run special functions.</p><p>The following figure gives a screen showing a partial script.</p><p>Company Proprietary TMW Systems, Inc. 2018 26 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>Company Proprietary TMW Systems, Inc. 2018 27 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>The table below contains the use and syntax of each scripting command. </p><p>TMW Data Exchange Agent Script Commands</p><p>Paramete Paramete Paramete Paramete Paramete Parameter Description Command r1 r2 r3 r4 r5 6 Append a string value from a cell in a source tab to a cell in a Source Source Destinatio Destinatio destination tab APPEND Tab Cell n Tab n Cell “int” or Custom Date Format (see Copy from one grid cell Source Source Destinatio Destinatio Appendix Default to another COPY Tab Cell n Tab n Cell A) value “int” or Custom Copy cells in a column Date from one grid to a Format column for all the rows (see that exist in a Source Source Destinatio Destinatio Appendix Default destination grid. COPYALLFROM Tab Cell n Tab n Cell A) value Copy cells in a column “int” or from all rows in one grid Custom to a column n a Date destination grid. Create Format the row in the (see destination if it doesn’t Source Source Destinatio Destinatio Appendix Default exist. COPYTOALL Tab Cell n Tab n Cell A) value</p><p>Company Proprietary TMW Systems, Inc. 2018 28 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>TMW Data Exchange Agent Script Commands</p><p>Paramete Paramete Paramete Paramete Paramete Parameter Description Command r1 r2 r3 r4 r5 6 Copy an expressions from one grid cell to another (see Appendix A Source Source Destinatio Destinatio for expression syntax) COPYEXP Tab Cell n Tab n Cell Label script entry points for subroutines and GOTO commands. The label is a single word, prefixed with a colon :label Go to :label GOTO :label Call routine at :label CALL :label Return from routine RETURN Compare values and pass control to another part of the script on Source Source result of comparison IF Tab Cell EQUAL TO PREVIOUS CALL :label Compare values and pass control to another part of the script on Source Source result of comparison IF Tab Cell EQUAL TO NEXT CALL :label Compare values and pass control to another part of the script on Source Source result of comparison IF Tab Cell EQUAL TO Value CALL :label Compare values and pass control to another part of the script on Source Source result of comparison IF Tab Cell EQUAL TO PREVIOUS GOTO :label</p><p>Company Proprietary TMW Systems, Inc. 2018 29 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>TMW Data Exchange Agent Script Commands</p><p>Paramete Paramete Paramete Paramete Paramete Parameter Description Command r1 r2 r3 r4 r5 6 Compare values and pass control to another part of the script on Source Source result of comparison IF Tab Cell EQUAL TO NEXT GOTO :label Compare values and pass control to another part of the script on Source Source result of comparison IF Tab Cell EQUAL TO Value GOTO :label Compare values and pass control to another part of the script on Source Source NOT result of comparison IF Tab Cell EQUAL TO PREVIOUS CALL :label Compare values and pass control to another part of the script on Source Source NOT result of comparison IF Tab Cell EQUAL TO NEXT CALL :label Compare values and pass control to another part of the script on Source Source NOT result of comparison IF Tab Cell EQUAL TO Value CALL :label Compare values and pass control to another part of the script on Source Source NOT result of comparison IF Tab Cell EQUAL TO PREVIOUS GOTO :label Compare values and pass control to another part of the script on Source Source NOT result of comparison IF Tab Cell EQUAL TO NEXT GOTO :label</p><p>Company Proprietary TMW Systems, Inc. 2018 30 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>TMW Data Exchange Agent Script Commands</p><p>Paramete Paramete Paramete Paramete Paramete Parameter Description Command r1 r2 r3 r4 r5 6 Compare values and pass control to another part of the script on Source Source NOT result of comparison IF Tab Cell EQUAL TO Value GOTO :label Compare values and pass control to another part of the script on Source Source result of comparison IF Tab Cell EMPTY PREVIOUS CALL :label Compare values and pass control to another part of the script on Source Source result of comparison IF Tab Cell EMPTY NEXT CALL :label Compare values and pass control to another part of the script on Source Source result of comparison IF Tab Cell EMPTY CURRENT CALL :label Compare values and pass control to another part of the script on Source Source result of comparison IF Tab Cell EMPTY PREVIOUS GOTO :label Compare values and pass control to another part of the script on Source Source result of comparison IF Tab Cell EMPTY NEXT GOTO :label Compare values and pass control to another part of the script on Source Source result of comparison IF Tab Cell EMPTY CURRENT GOTO :label</p><p>Company Proprietary TMW Systems, Inc. 2018 31 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>TMW Data Exchange Agent Script Commands</p><p>Paramete Paramete Paramete Paramete Paramete Parameter Description Command r1 r2 r3 r4 r5 6 Compare values and pass control to another part of the script on Source Source NOT result of comparison IF Tab Cell EMPTY PREVIOUS CALL :label Compare values and pass control to another part of the script on Source Source NOT result of comparison IF Tab Cell EMPTY NEXT CALL :label Compare values and pass control to another part of the script on Source Source NOT result of comparison IF Tab Cell EMPTY CURRENT CALL :label Compare values and pass control to another part of the script on Source Source NOT result of comparison IF Tab Cell EMPTY PREVIOUS GOTO :label Compare values and pass control to another part of the script on Source Source NOT result of comparison IF Tab Cell EMPTY NEXT GOTO :label Compare values and pass control to another part of the script on Source Source NOT result of comparison IF Tab Cell EMPTY CURRENT GOTO :label IF Source Source REGEX Regex CALL or :label Compare values using a Tab Cell expressio GOTO regular expression and n pass control to another part of the script on </p><p>Company Proprietary TMW Systems, Inc. 2018 32 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>TMW Data Exchange Agent Script Commands</p><p>Paramete Paramete Paramete Paramete Paramete Parameter Description Command r1 r2 r3 r4 r5 6 result of comparison. See Appendix C Extract the data from the source tab cell that matches the regular expression and place it Regex in the destination tab Source Source expressio Destinatio Destinatio cell. See Appendix C IF Tab Cell REGEX n n tab n Cell Echo message in message box with the corresponding message ECHO Message Create a entry in the Source Source Log history LOG Message Tab Cell Put a message in the info window in the upper right corner of the TMWDX main screen INFO Message Display cell contents on the status line at the bottom of the main Source Source TMWDX screen STATUS Tab Cell End of script END Goes to the next row of data in the specified grid. For the Source tab only, if no more rows, Source script moves to :label NEXTROW Tab :label </p><p>Company Proprietary TMW Systems, Inc. 2018 33 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>TMW Data Exchange Agent Script Commands</p><p>Paramete Paramete Paramete Paramete Paramete Parameter Description Command r1 r2 r3 r4 r5 6 Lookup miles between locations in cells. The origin and destination cells must be in the Source Source Source Destinatio Destinatio same column. MILES Tab PREVIOUS Tab Column n Tab n Cell Lookup miles between locations in cells. The origin and destination cells must be in the Source Source Source Destinatio Destinatio same column. ALK only. MILES Tab NEXT Tab Column n Tab n Cell Parse the nth (starting with 0) item from the string at the source tab Zero- cell and place it in the based Optional destination cell. See item Source Source Destinatio Destinatio Default Appendix C. PARSE pointer Tab Cell n Tab n Cell Value For a user command that returns a result set, fill the tab with the input parameters for the User Source command PARMS command Tab Translate a value in a cell to another value. Different flavors specified by type, and the value from the source cell on the Optional source tab. Translations Lookup Source Source Destinatio Destinatio Default are held in the Lookup LOOKUP Type Tab Cell n Tab n Cell Value</p><p>Company Proprietary TMW Systems, Inc. 2018 34 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>TMW Data Exchange Agent Script Commands</p><p>Paramete Paramete Paramete Paramete Paramete Parameter Description Command r1 r2 r3 r4 r5 6</p><p> table. Source Clear the tab of data CLEAR Tab Clear all working tabs of Source data CLEAR Tab Execute the stored procedure on the tab specified on the current row data in the grid on Source the tab EXECUTE Tab Execute the stored procedure on the tab specified on all data rows in the grid on the tab, optionally calling the routine at :label after each execution, to Source allow error handling EXECUTE Tab ALL CALL :label Dynamically change the stored procedure associated with the tab. The procedure parameters in the grid Stored change automatically. Target procedure The association will SETPROC Tab name</p><p>Company Proprietary TMW Systems, Inc. 2018 35 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>TMW Data Exchange Agent Script Commands</p><p>Paramete Paramete Paramete Paramete Paramete Parameter Description Command r1 r2 r3 r4 r5 6 revert to the original setting on restart</p><p>Copy from the Source tab ONLY from previous Source row COPYFROMPREVIOUSROW Column Copy from the Source Source tab ONLY to next row COPYFROM NEXTROW Column Increment specified tab, Source specified cell INCREMENT Tab Cell Copy and increment from the specified tab, specified cell from INCREMENTFROMPREVIOUSR Source previous row OW Tab Cell Copy the value in the row number corresponding to the value in the destination column to that destination column, for all rows in the destination. See Source Source Destinatio Destinatio Appendix C LINK Tab Cell n Tab n Cell Set destination cell on destination tab to value, Destinatio Destinatio optionally for ALL rows SETVALUE Value n Tab n Cell ALL </p><p>Company Proprietary TMW Systems, Inc. 2018 36 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>TMW Data Exchange Agent Script Commands</p><p>Paramete Paramete Paramete Paramete Paramete Parameter Description Command r1 r2 r3 r4 r5 6 Build file using message as specified in the SMTP table. Use value to look up message. Specify File “ALL” to use all the rows specificati in the source tab in the on message. Otherwise, including only the current row is path, used to replace fields in Source name and the message body. SENDFILE Value Tab ALL extension Send mail message as specified in the SMTP table. Use value to look up message. Specify “ALL” to use all the rows in the source tab in the message. Otherwise, only the current row is used to replace fields in Source the message body. SENDMAIL Value Tab ALL Set flag to value of Source Source cell SETFLAG Cell Makes Source row the current row on Source Source Source tab RESETROW Tab Row </p><p>Company Proprietary TMW Systems, Inc. 2018 37 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>Debugging</p><p>Script debugging support is available in Edit/Edit Setup mode. Single stepping of the script is supporting, as is running until a certain line is executed.</p><p>Check the single step check box to enable single stepping. The Single Step button appears. Click this button to single step. You can inspect any of the grids during debugging.</p><p>For break points, you can now type in a line number after which to break. If there is a file in the import location, run can bring in the file into the source tab clicking the timer button.</p><p>The break window is cleared on a break, and the UI is placed in single step mode. </p><p>As well, the script processor in the application checked to make sure that the tabs referred to by the script commands are present, and that labels in the code exist. </p><p>Company Proprietary TMW Systems, Inc. 2018 38 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>If an issue exists, the cell with the error will be flagged with a red dot containing a white exclamation point.</p><p>Additionally, a diagnostic message is displayed.</p><p>Company Proprietary TMW Systems, Inc. 2018 39 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>Operation</p><p>To operate the TMWDX application once it is set up, click the “TMW Data Exchange” item on your start menu.</p><p>A window like the one shown below will be presented. To stop application polling, click on the button with the polling countdown in it, circled in red in the figure below:</p><p>To exit the application, click on the red “x” in the upper right hand corner of the TMWDX main window, or select the “Exit” menu item.</p><p>Company Proprietary TMW Systems, Inc. 2018 40 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>Logging</p><p>The logging level is set in the main screen.</p><p>Company Proprietary TMW Systems, Inc. 2018 41 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>Appendix A – Custom Date-Time Formats</p><p>Format specifier Description d Displays the current day of the month, measured as a number between 1 and 31, inclusive. If the day is a single digit only (1-9), then it is displayed as a single digit. Note that if the 'd' format specifier is used alone, without other custom format strings, it is interpreted as the standard short date pattern format specifier. If the 'd' format specifier is passed with other custom format specifiers or the '%' character, it is interpreted as a custom format specifier. dd Displays the current day of the month, measured as a number between 1 and 31, inclusive. If the day is a single digit only (1-9), it is formatted with a preceding 0 (01-09). ddd Displays the abbreviated name of the day for the specified DateTime. If a specific valid format provider (a non-null object that implements IFormatProvider with the expected property) is not supplied, then the AbbreviatedDayNames property of the DateTimeFormat and its current culture associated with the current thread is used. Otherwise, the AbbreviatedDayNames property from the specified format provider is used. dddd (plus any Displays the full name of the day for the specified DateTime. number of If a specific valid format provider (a non-null object that additional "d" implements IFormatProvider with the expected property) is characters) not supplied, then the DayNames property of the DateTimeFormat and its current culture associated with the current thread is used. Otherwise, the DayNames property from the specified format provider is used. f Displays seconds fractions represented in one digit. Note that if the 'f' format specifier is used alone, without other custom format strings, it is interpreted as the full (long date + short time) format specifier. If the 'f' format specifier is passed with other custom format specifiers or the '%' character, it is interpreted as a custom format specifier. ff Displays seconds fractions represented in two digits. fff Displays seconds fractions represented in three digits.</p><p>Company Proprietary TMW Systems, Inc. 2018 42 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p> ffff Displays seconds fractions represented in four digits. fffff Displays seconds fractions represented in five digits. ffffff Displays seconds fractions represented in six digits. fffffff Displays seconds fractions represented in seven digits. g or gg (plus any Displays the era (A.D. for example) for the specified number of DateTime. If a specific valid format provider (a non-null additional "g" object that implements IFormatProvider with the expected characters) property) is not supplied, then the era is determined from the calendar associated with the DateTimeFormat and its current culture associated with the current thread. Note that if the 'g' format specifier is used alone, without other custom format strings, it is interpreted as the standard general format specifier. If the 'g' format specifier is passed with other custom format specifiers or the '%' character, it is interpreted as a custom format specifier. h Displays the hour for the specified DateTime in the range 1- 12. The hour represents whole hours passed since either midnight (displayed as 12) or noon (also displayed as 12). If this format is used alone, then the same hour before or after noon is indistinguishable. If the hour is a single digit (1-9), it is displayed as a single digit. No rounding occurs when displaying the hour. For example, a DateTime of 5:43 returns 5. hh, hh (plus any Displays the hour for the specified DateTime in the range 1- number of 12. The hour represents whole hours passed since either additional "h" midnight (displayed as 12) or noon (also displayed as 12). If characters) this format is used alone, then the same hour before or after noon is indistinguishable. If the hour is a single digit (1-9), it is formatted with a preceding 0 (01-09). H Displays the hour for the specified DateTime in the range 0- 23. The hour represents whole hours passed since midnight (displayed as 0). If the hour is a single digit (0-9), it is displayed as a single digit. HH, HH (plus any Displays the hour for the specified DateTime in the range 0- number of 23. The hour represents whole hours passed since midnight additional "H" (displayed as 0). If the hour is a single digit (0-9), it is characters) formatted with a preceding 0 (01-09).</p><p>Company Proprietary TMW Systems, Inc. 2018 43 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p> m Displays the minute for the specified DateTime in the range 0-59. The minute represents whole minutes passed since the last hour. If the minute is a single digit (0-9), it is displayed as a single digit. Note that if the 'm' format specifier is used alone, without other custom format strings, it is interpreted as the standard month day pattern format specifier. If the 'm' format specifier is passed with other custom format specifiers or the '%' character, it is interpreted as a custom format specifier. mm, mm (plus any Displays the minute for the specified DateTime in the range number of 0-59. The minute represents whole minutes passed since additional "m" the last hour. If the minute is a single digit (0-9), it is characters) formatted with a preceding 0 (01-09). M Displays the month, measured as a number between 1 and 12, inclusive. If the month is a single digit (1-9), it is displayed as a single digit. Note that if the 'M' format specifier is used alone, without other custom format strings, it is interpreted as the standard month day pattern format specifier. If the 'M' format specifier is passed with other custom format specifiers or the '%' character, it is interpreted as a custom format specifier. MM Displays the month, measured as a number between 1 and 12, inclusive. If the month is a single digit (1-9), it is formatted with a preceding 0 (01-09). MMM Displays the abbreviated name of the month for the specified DateTime. If a specific valid format provider (a non-null object that implements IFormatProvider with the expected property) is not supplied, the AbbreviatedMonthNames property of the DateTimeFormat and its current culture associated with the current thread is used. Otherwise, the AbbreviatedMonthNames property from the specified format provider is used. MMMM Displays the full name of the month for the specified DateTime. If a specific valid format provider (a non-null object that implements IFormatProvider with the expected property) is not supplied, then the MonthNames property of the DateTimeFormat and its current culture associated with the current thread is used. Otherwise, the MonthNames property from the specified format provider is used.</p><p>Company Proprietary TMW Systems, Inc. 2018 44 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p> s Displays the seconds for the specified DateTime in the range 0-59. The second represents whole seconds passed since the last minute. If the second is a single digit (0-9), it is displayed as a single digit only. Note that if the 's' format specifier is used alone, without other custom format strings, it is interpreted as the standard sortable date/time pattern format specifier. If the 's' format specifier is passed with other custom format specifiers or the '%' character, it is interpreted as a custom format specifier. ss, ss (plus any Displays the seconds for the specified DateTime in the number of range 0-59. The second represents whole seconds passed additional "s" since the last minute. If the second is a single digit (0-9), it is characters) formatted with a preceding 0 (01-09). t Displays the first character of the A.M./P.M. designator for the specified DateTime. If a specific valid format provider (a non-null object that implements IFormatProvider with the expected property) is not supplied, then the AMDesignator (or PMDesignator) property of the DateTimeFormat and its current culture associated with the current thread is used. Otherwise, the AMDesignator (or PMDesignator) property from the specified IFormatProvider is used. If the total number of whole hours passed for the specified DateTime is less than 12, then the AMDesignator is used. Otherwise, the PMDesignator is used. Note that if the 't' format specifier is used alone, without other custom format strings, it is interpreted as the standard long time pattern format specifier. If the 't' format specifier is passed with other custom format specifiers or the '%' character, it is interpreted as a custom format specifier. tt, tt (plus any Displays the A.M./P.M. designator for the specified number of DateTime. If a specific valid format provider (a non-null additional "t" object that implements IFormatProvider with the expected characters) property) is not supplied, then the AMDesignator (or PMDesignator) property of the DateTimeFormat and its current culture associated with the current thread is used. Otherwise, the AMDesignator (or PMDesignator) property from the specified IFormatProvider is used. If the total number of whole hours passed for the specified DateTime is less than 12, then the AMDesignator is used. Otherwise, the PMDesignator is used.</p><p>Company Proprietary TMW Systems, Inc. 2018 45 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p> y Displays the year for the specified DateTime as a maximum two-digit number. The first two digits of the year are omitted. If the year is a single digit (1-9), it is displayed as a single digit. Note that if the 'y' format specifier is used alone, without other custom format strings, it is interpreted as the standard short date pattern format specifier. If the 'y' format specifier is passed with other custom format specifiers or the '%' character, it is interpreted as a custom format specifier. yy Displays the year for the specified DateTime as a maximum two-digit number. The first two digits of the year are omitted. If the year is a single digit (1-9), it is formatted with a preceding 0 (01-09). yyyy Displays the year for the specified DateTime, including the century. If the year is less than four digits in length, then preceding zeros are appended as necessary to make the displayed year four digits long. z Displays the time zone offset for the system's current time zone in whole hours only. The offset is always displayed with a leading sign (zero is displayed as "+0"), indicating hours ahead of Greenwich mean time (+) or hours behind Greenwich mean time (-). The range of values is –12 to +13. If the offset is a single digit (0-9), it is displayed as a single digit with the appropriate leading sign. The setting for the time zone is specified as +X or –X where X is the offset in hours from GMT. The displayed offset is affected by daylight savings time. zz Displays the time zone offset for the system's current time zone in whole hours only. The offset is always displayed with a leading or trailing sign (zero is displayed as "+00"), indicating hours ahead of Greenwich mean time (+) or hours behind Greenwich mean time (-). The range of values is –12 to +13. If the offset is a single digit (0-9), it is formatted with a preceding 0 (01-09) with the appropriate leading sign. The setting for the time zone is specified as +X or –X where X is the offset in hours from GMT. The displayed offset is affected by daylight savings time.</p><p>Company Proprietary TMW Systems, Inc. 2018 46 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p> zzz, zzz (plus any Displays the time zone offset for the system's current time number of zone in hours and minutes. The offset is always displayed additional "z" with a leading or trailing sign (zero is displayed as "+00:00"), characters) indicating hours ahead of Greenwich mean time (+) or hours behind Greenwich mean time (-). The range of values is – 12:00 to +13:00. If the offset is a single digit (0-9), it is formatted with a preceding 0 (01-09) with the appropriate leading sign. The setting for the time zone is specified as +X or –X where X is the offset in hours from GMT. The displayed offset is affected by daylight savings time. : Time separator. / Date separator. " Quoted string. Displays the literal value of any string between two quotation marks preceded by the escape character (/). ' Quoted string. Displays the literal value of any string between two " ' " characters. %c Where c is both a standard format specifier and a custom format specifier, displays the custom format pattern associated with the format specifier. Note that if a format specifier is used alone as a single character, it is interpreted as a standard format specifier. Only format specifiers consisting of two or more characters are interpreted as custom format specifiers. In order to display the custom format for a specifier defined as both a standard and a custom format specifier, precede the specifier with a % symbol. \c Where c is any character, the escape character displays the next character as a literal. The escape character cannot be used to create an escape sequence (like "\n" for new line) in this context. Any other character Other characters are written directly to the result string as literals.</p><p>Company Proprietary TMW Systems, Inc. 2018 47 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>Appendix B - Expressions</p><p>EXPRESSION SYNTAX</p><p>When creating an expression in a cell, use the column name to refer to columns. For example, if the column name for one column is "UnitPrice", and another "Quantity", the expression would be:</p><p>"UnitPrice * Quantity"</p><p>When creating an expression for a filter, enclose strings with single quotes:</p><p>"LastName = 'Jones'"</p><p>The following characters are special characters and must be escaped, as explained below, if they are used in a column name:</p><p>\n (newline) \t (tab) \r (carriage return) ~ ( ) # \ / = > < + - * % & | ^ ' " [ ]</p><p>Company Proprietary TMW Systems, Inc. 2018 48 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>If a column name contains one of the above characters, the name must be wrapped in brackets. For example to use a column named "Column#" in an expression, you would write "[Column#]":</p><p>Total * [Column#]</p><p>Because brackets are special characters, you must use a slash ("\") to escape the bracket, if it is part of a column name. For example, a column named "Column[]" would be written:</p><p>Total * [Column[\]]</p><p>(Only the second bracket must be escaped.)</p><p>USER-DEFINED VALUES</p><p>User-defined values may be used within expressions to be compared against column values. String values should be enclosed within single quotes. Date values should be enclosed within pound signs (#). Decimals and scientific notation are permissible for numeric values. For example:</p><p>"FirstName = 'John'"</p><p>"Price <= 50.00"</p><p>"Birthdate < #1/31/82#"</p><p>For columns that contain enumeration values, cast the value to an integer data type. For example:</p><p>"EnumColumn = 5"</p><p>OPERATORS</p><p>Concatenation is allowed using Boolean AND, OR, and NOT operators. You can use parentheses to group clauses and force precedence. The AND operator has precedence over other operators. For example:</p><p>(LastName = 'Smith' OR LastName = 'Jones') AND FirstName = 'John'</p><p>Company Proprietary TMW Systems, Inc. 2018 49 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>When creating comparison expressions, the following operators are allowed:</p><p>< > <= >= <> = IN LIKE</p><p>The following arithmetic operators are also supported in expressions:</p><p>+ (addition) - (subtraction) * (multiplication) / (division) % (modulus)</p><p>STRING OPERATORS</p><p>To concatenate a string, use the + character. </p><p>WILDCARD CHARACTERS</p><p>Both the * and % can be used interchangeably for wildcards in a LIKE comparison. If the string in a LIKE clause contains a * or %, those characters should be escaped in brackets ([]). If a bracket is in the clause, the bracket characters should be escaped in brackets (for example [[] or []]). A wildcard is allowed at the beginning and end of a pattern, or at the end of a pattern, or at the beginning of a pattern. For example:</p><p>"ItemName LIKE '*product*'"</p><p>"ItemName LIKE '*product'"</p><p>"ItemName LIKE 'product*'"</p><p>Wildcards are not allowed in the middle of a string. For example, 'te*xt' is not allowed.</p><p>Company Proprietary TMW Systems, Inc. 2018 50 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>FUNCTIONS </p><p>The following functions are supported:</p><p>CONVERT </p><p>Description Converts given expression to a specified type. </p><p>Syntax Convert(expression, type) Arguments expression-- The expression to convert. type-- The type to which the value will be converted.</p><p>Example: myDataColumn.Expression="Convert(total, 'System.Int32')"</p><p>All conversions are valid with the following exceptions: Boolean can be coerced to and from Byte, SByte, Int16, Int32, Int64, UInt16, UInt32, UInt64, String and itself only. Char can be coerced to and from Int32, UInt32, String, and itself only. DateTime can be coerced to and from String and itself only. TimeSpan can be coerced to and from String and itself only.</p><p>LEN </p><p>Description Gets the length of a string Syntax LEN(expression) Arguments expression-- The string to be evaluated. </p><p>Example: myColumn.Expression="Len(ItemName)"</p><p>ISNULL </p><p>Description Checks an expression and either returns the checked expression or a replacement value. Syntax ISNULL(expression, replacementvalue) Arguments expression-- The expression to check. replacementvalue-- If expression is a null reference (Nothing), replacementvalue is returned.</p><p>Example: myColumn.Expression="IsNull(price, -1)"</p><p>Company Proprietary TMW Systems, Inc. 2018 51 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>IIF </p><p>Description Gets one of two values depending on the result of a logical expression. Syntax IIF(expr, truepart, falsepart) Arguments expr-- The expression to evaluate. truepart-- The value to return if the expression is true.</p><p> falsepart-- The value to return if the expression is false.</p><p>Example: myColumn.Expression = "IIF(total>1000, 'expensive', 'dear')</p><p>TRIM </p><p>Description Removes all leading and trailing blank characters like\r,\n,\t, ' ' Syntax TRIM(expression) Arguments expression-- The expression to trim. </p><p>SUBSTRING </p><p>Description Gets a sub-string of a specified length, starting at a specified point in the string. Syntax SUBSTRING(expression, start, length)</p><p>Arguments expression-- The source string for the substring. start-- Integer that specifies where the substring begins.</p><p> length-- Integer that specifies the length of the substring.</p><p>Example: myColumn.Expression = "SUBSTRING(phone, 7, 8)"</p><p>Company Proprietary TMW Systems, Inc. 2018 52 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>Appendix C – DX Scripting Command Tips and Tricks</p><p>REGEX</p><p>TMWDX Implements REGEX of two kinds:</p><p>IF srctab srccell REGEX regex_expression GOTO|CALL label</p><p>If there is a match with the source cell goto the label or call the routine at the label.</p><p>More powerfully:</p><p>IF srctab srccell REGEX regex_expression desttab destcell</p><p>If there is a match with the source cell, copy the MATCH to the destination cell.</p><p>In the screen shot below, line 1010 sets up a string to parse. Line 1030 matches and places the match in UserVars work3, using the following e-mail regex matcher:</p><p>[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]</p><p>Company Proprietary TMW Systems, Inc. 2018 53 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>Here’s the result:</p><p>Company Proprietary TMW Systems, Inc. 2018 54 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>LINK</p><p>You don’t have to just replace, say, stop numbers in stop reference records, which is a typical use. As long as the target field has the sequence of the record in the parent, any field from the parent can be copied into the target field in the child.</p><p>For example, transferring the corresponding @cmp_id from stops grid to notes grid:</p><p>Notes:</p><p>Company Proprietary TMW Systems, Inc. 2018 55 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>Stops:</p><p>LINK command for linking in company id from stops to notes:</p><p>Company Proprietary TMW Systems, Inc. 2018 56 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>Notes after LINK executes:</p><p>Company Proprietary TMW Systems, Inc. 2018 57 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>PARSE</p><p>PARSE [zero-based item pointer] [source tab] [source cell] [dest tab] [dest cell] [optional default value]</p><p>Picks the nth value out of the parsed source string and places that result in the destination.</p><p>Company Proprietary TMW Systems, Inc. 2018 58 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>Company Proprietary TMW Systems, Inc. 2018 59 TMW SmartLink Data Exchange Agent Version: 1.6 User Guide Date: 4/30/2018</p><p>SENDFILE</p><p>The SENDFILE command at line 1200 in the figure below will use the mail message with the name TESTER and substitute the data in the tab into the message for each row in the tab, and then make the specified file.</p><p>Company Proprietary TMW Systems, Inc. 2018 60</p>

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    60 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us