Hide last authors
Achraf El Kari 1.1 1 {{box cssClass="floatinginfobox" title="**Contents**"}}
2 {{toc/}}
3 {{/box}}
4
Achraf El Kari 2.2 5 = Introduction =
Achraf El Kari 1.1 6
Achraf El Kari 2.2 7 **iXPath** uses the BPMN (Business Process Model and Notation) standard for the translation part.
8 BPMN is a business process modeling method to describe the business activities of an organization in a graphical representation.
9
Achraf El Kari 2.3 10 Below an example of a flow traced by the iXPath BPMN module:
Achraf El Kari 2.2 11
Achraf El Kari 19.1 12 [[image:1615831422135-492.png||height="378" width="996"]]
Achraf El Kari 2.2 13
Outhman Moustaghfir 42.2 14 As we can see, there are 2 main types: Connectors and Gateways
Achraf El Kari 2.2 15
Achraf El Kari 1.3 16 = Connectors =
Achraf El Kari 1.1 17
Achraf El Kari 2.4 18 A connector is an algorithm that is executed via a trigger. In iXPath, the trigger is always an input file.
19
20 In this part, we go through each of the connectors and their particularities:
21
Achraf El Kari 4.1 22 == Listeners ==
Achraf El Kari 2.4 23
Achraf El Kari 19.2 24 A listening connector (or listener) is the entry point for a scenario. It allows the created event to be routed through a communication channel (FTP, SFTP, AS2, MAIL, FILE, Webservice). Communication's config is required to handle those connectors.
Achraf El Kari 2.4 25
Outhman Moustaghfir 42.2 26 **//Note~://** iXPath detects incoming events in real-time.
Achraf El Kari 6.1 27
28 (% style="margin-left:auto; margin-right:auto" %)
Achraf El Kari 18.1 29 |=(% style="width: 138px;" %)Listener Name|=(% style="width: 103px;" %)Icon|=(% style="width: 974px;" %)Description
Outhman Moustaghfir 76.179 30 |(% style="width:138px" %)[[FTP Listener>>Documentation.iXPath.User Guide.The iXPath BPMN.Connectors.Listeners.FTP Listener.WebHome]]|(% style="width:103px" %)[[image:1615902036864-240.png||height="66" width="69"]]|(% style="width:974px" %)Listen on an **FTP/FTPS** communication, on a specific user (created locally), and on a specific directory with a given file mask.
Outhman Moustaghfir 93.2 31 |(% style="width:138px" %)[[SFTP Listener>>doc:Documentation.iXPath.User Guide.The iXPath BPMN.Connectors.Listeners.SFTP Listener.WebHome]]|(% style="width:103px" %)[[image:1615903474893-102.png||height="59" width="63"]]|(% style="width:974px" %)Listen on an **SFTP** communication, on a specific user (created locally), and on specific directory with a given file mask.
Outhman Moustaghfir 42.2 32 |(% style="width:138px" %)[[AS2 Listener>>doc:Documentation.iXPath.User Guide.The iXPath BPMN.Connectors.Listeners.AS2 Listener.WebHome]]|(% style="width:103px" %)[[image:1615903500591-246.png||height="66" width="61"]]|(% style="width:974px" %)Listen on an **AS2 **communication, on specific AS2_ID (created locally), and on specific file mask.
33 |(% style="width:138px" %)[[FILE Listener>>doc:Documentation.iXPath.User Guide.The iXPath BPMN.Connectors.Listeners.FILE Listener.WebHome]]|(% style="width:103px" %)[[image:1615903536880-750.png||height="60" width="60"]]|(% style="width:974px" %)Real-time listening on a specific directory with a given file mask.
Outhman Moustaghfir 93.2 34 |(% style="width:138px" %)[[WebService Listener>>doc:Documentation.iXPath.User Guide.The iXPath BPMN.Connectors.Listeners.WebService Listener.WebHome]]|(% style="width:103px" %)[[image:1615903600906-895.png||height="53" width="81"]]|(% style="width:974px" %)Listen on a **Rest** communication (HTTP/HTTPS), on a specific endpoint URI (GET/POST/PUT/DELETE) (created locally)
Outhman Moustaghfir 42.2 35 |(% style="width:138px" %)[[Mail Listener >>doc:Documentation.iXPath.User Guide.The iXPath BPMN.Connectors.Listeners.Mail Listener.WebHome]]|(% style="width:103px" %)[[image:1615903620708-998.png||height="67" width="67"]]|(% style="width:974px" %)Listen on **Mail **communication (IMAP), on a specific mail, on a regex sender mask, on a regex mail subject, and on a given file mask.
Outhman Moustaghfir 93.2 36 |(% style="width:138px" %)[[App Event>>doc:Documentation.iXPath.User Guide.The iXPath BPMN.Connectors.Listeners.App Event.WebHome]]|(% style="width:103px" %)[[image:1615903682090-260.png||height="55" width="72"]]|(% style="width:974px" %)Listen on a **Rest **communication (HTTP/HTTPS), on a specific endpoint URI (GET/POST/PUT/DELETE) (created locally). App event is used locally between iXPath's app.
Rabie Chettahi 40.1 37 |(% style="width:138px" %)[[Tracking Listener>>doc:Documentation.iXPath.User Guide.The iXPath BPMN.Connectors.Listeners.Tracking Listener.WebHome]]|(% style="width:103px" %)[[image:1615903640796-201.png||height="65" width="59"]]|(% style="width:974px" %)Listen on a **Tracking** **database **event, on a specific tracking type (Order, OrderLine...), on the specific action (Create, Delete, Update), and on a specific tracking status.
Outhman Moustaghfir 42.2 38 |(% style="width:138px" %)[[Time Listener>>doc:Documentation.iXPath.User Guide.The iXPath BPMN.Connectors.Listeners.Time Listener.WebHome]]|(% style="width:103px" %)[[image:1615903655709-270.png||height="67" width="69"]]|(% style="width:974px" %)Listen on a **time **with cron expression. it allows triggering event at a specific time periodically.
Achraf El Kari 6.1 39
Achraf El Kari 4.1 40 == Scenario ==
Achraf El Kari 2.4 41
Outhman Moustaghfir 42.2 42 A scenario connector deals directly with the input file, either translating it into some desired format or copying it, etc...
Achraf El Kari 2.4 43
Outhman Moustaghfir 42.2 44 here's the list of all scenario connectors of iXPath : 
45
Outhman Moustaghfir 72.2 46 |(% style="width:158px" %)**Scenario Connector**|(% style="width:79px" %)**Icon**|(% style="width:753px" %)**Description**
Outhman Moustaghfir 76.105 47 |(% style="width:158px" %)__FileToXML__|(% style="width:79px" %)[[image:2021-04-21_12h19_50.png||height="69" width="82"]]|(% style="width:753px" %)Transforms a certain file to XML format with a given output file name.
48 |(% style="width:158px" %)__XMLToFile__|(% style="width:79px" %) [[image:2021-04-21_12h27_09.png||height="60" width="68"]]|(% style="width:753px" %)Converts an XML file to a file format.
Outhman Moustaghfir 100.3 49 |(% style="width:158px" %)__ExcelToXML__|(% style="width:79px" %) [[image:2021-04-21_12h31_41.png||height="63" width="66"]]|(% style="width:753px" %)Takes an Excel (XSL, XSLX) file and converts it to XML format.
Outhman Moustaghfir 76.105 50 |(% style="width:158px" %)__XMLToExcel__|(% style="width:79px" %) [[image:2021-04-21_12h31_58.png||height="59" width="59"]]|(% style="width:753px" %)converts an XML file to its convenient Excel format.
51 |(% style="width:158px" %)__XMLToPdf__|(% style="width:79px" %) [[image:2021-04-21_12h34_23.png||height="64" width="63"]]|(% style="width:753px" %)Converts an XML file to PDF text format.
52 |(% style="width:158px" %)__PdfToXML__|(% style="width:79px" %) [[image:2021-04-21_12h34_33.png||height="56" width="64"]]|(% style="width:753px" %)Transforms a PDF file input to XML format.
53 |(% style="width:158px" %)__XMLToXML__|(% style="width:79px" %) [[image:2021-04-21_12h34_57.png||height="55" width="59"]]|(% style="width:753px" %)Transforms an XML File to another XML File.
Outhman Moustaghfir 76.110 54 |(% style="width:158px" %)__TrkToXML__|(% style="width:79px" %)[[image:2021-04-21_12h49_47.png||height="61" width="68"]]|(% style="width:753px" %)retrieve a tracking from the database and translate it to an XML file.
55 |(% style="width:158px" %)__XMLToTrk__|(% style="width:79px" %)[[image:2021-04-21_12h49_52.png]]|(% style="width:753px" %)Stores tracking in the database from the XML input file.
Outhman Moustaghfir 76.105 56 |(% style="width:158px" %)__XMLToBDD__|(% style="width:79px" %)[[image:2021-04-21_12h50_16.png||height="58" width="65"]]|(% style="width:753px" %)Translates data from an XML file and store it in the database.
Outhman Moustaghfir 76.113 57 |(% style="width:158px" %)__BDDToXML__|(% style="width:79px" %)[[image:2021-04-21_12h49_57.png]]|(% style="width:753px" %)Extracts data from the database and converts it into an XML file.
Outhman Moustaghfir 89.9 58 |(% style="width:158px" %)__JsonToXML__|(% style="width:79px" %)[[image:2021-04-21_12h50_33.png]]|(% style="width:753px" %)Takes a JSON file and translates it to XML format.
Outhman Moustaghfir 76.105 59 |(% style="width:158px" %)__XMLToJSON__|(% style="width:79px" %)[[image:2021-04-21_12h50_38.png]]|(% style="width:753px" %)Converts an XML file to JSON format.
60 |(% style="width:158px" %)XMLToBin|(% style="width:79px" %)[[image:2021-04-21_12h50_24.png||height="69" width="71"]]|(% style="width:753px" %)Converts an XML file to its Binary format.
Outhman Moustaghfir 76.90 61 |(% style="width:158px" %)__CopyFile__|(% style="width:79px" %)[[image:2021-04-21_12h50_50.png]]|(% style="width:753px" %)Copy a group of files from some connectors to a certain directory.
Outhman Moustaghfir 76.105 62 |(% style="width:158px" %)__SplitXML__|(% style="width:79px" %)[[image:2021-04-21_12h51_08.png]]|(% style="width:753px" %)splits an XML file in a certain node with a split number and output file name.
63 |(% style="width:158px" %)__MergeXML__|(% style="width:79px" %)[[image:2021-04-21_12h51_12.png]]|(% style="width:753px" %)merges XML files in a certain node with a given output file name.
Outhman Moustaghfir 76.102 64 |(% style="width:158px" %)__Pile__|(% style="width:79px" %)[[image:2021-04-21_12h51_17.png]]|(% style="width:753px" %)Put data in a linear stack that is used to store the collection of objects.
Outhman Moustaghfir 76.105 65 |(% style="width:158px" %)__GenerateFile__|(% style="width:79px" %)[[image:2021-04-21_12h51_24.png]]|(% style="width:753px" %)writes and generates a file with a given output file name.
Outhman Moustaghfir 98.3 66 |(% style="width:158px" %)__FiltreTracking__|(% style="width:79px" %)[[image:2021-04-21_12h51_30.png]]|(% style="width:753px" %)Retrieves Tracking data from the database using a filter, and puts it in a JSON file.
Outhman Moustaghfir 83.11 67 |(% style="width:158px" %)__LoadFile__|(% style="width:79px" %)[[image:2021-04-21_12h51_33.png]]|(% style="width:753px" %)Loads a group of files from a directory path and chooses to move it or not from the original folder.
Outhman Moustaghfir 76.160 68 |(% style="width:158px" %)__ReturnWebService__|(% style="width:79px" %)[[image:2021-04-21_12h50_45.png]]|(% style="width:753px" %)(((
Outhman Moustaghfir 83.36 69 returns a web service with an HTTP code response to a flow.
Outhman Moustaghfir 76.160 70 )))
Outhman Moustaghfir 42.2 71
Outhman Moustaghfir 50.2 72 ==
73 Routing ==
Achraf El Kari 2.4 74
Outhman Moustaghfir 83.96 75 Routing connectors help route received files to the appropriate destination, and launch a route inside each environment.
Outhman Moustaghfir 83.75 76
77
Outhman Moustaghfir 83.2 78 |(% style="width:151px" %)**Routing connector**|(% style="width:86px" %)**Icon**|(% style="width:753px" %)**Description**
Outhman Moustaghfir 83.36 79 |(% style="width:151px" %)__File Detection__|(% style="width:86px" %)[[image:2021-04-21_16h28_15.png]]|(% style="width:753px" %)(((
Outhman Moustaghfir 83.96 80 Detects the input file type and makes a filter by pattern and type.
Outhman Moustaghfir 83.36 81 )))
Outhman Moustaghfir 85.1 82 |(% style="width:151px" %)__File Fix__|(% style="width:86px" %)[[image:2021-04-21_16h28_22.png]]|(% style="width:753px" %)Fixes a file by giving: its identifier column, size, and value and sets the value needed to be fixed.  
Outhman Moustaghfir 83.96 83 |(% style="width:151px" %)__File Variable__|(% style="width:86px" %)[[image:2021-04-21_16h28_33.png]]|(% style="width:753px" %)Sets a bunch of variables in the input file.
Outhman Moustaghfir 98.4 84 |(% style="width:151px" %)__XML Detection__|(% style="width:86px" %)[[image:2021-04-21_16h28_38.png]]|(% style="width:753px" %)Detects XML file by a checked XPath expression.
Outhman Moustaghfir 97.2 85 |(% style="width:151px" %)__Call Scenario__|(% style="width:86px" %)[[image:2021-04-21_16h28_46.png]]|(% style="width:753px" %)Load a saved scenario and insert it in the current scenario.
Outhman Moustaghfir 76.178 86
Achraf El Kari 4.1 87 == Exploitation ==
Achraf El Kari 2.4 88
Outhman Moustaghfir 83.98 89 Exploitation Connectors are often available only for root users in iXPath, their main mission is to fix and prevent all database and memory problems.
Achraf El Kari 2.4 90
Outhman Moustaghfir 83.100 91 here's an updated list of exploitation connectors :
Outhman Moustaghfir 83.98 92
Outhman Moustaghfir 87.2 93 |(% style="width:188px" %)**Exploitation connectors**|(% style="width:81px" %)**Icon**|(% style="width:721px" %)**Description **
Outhman Moustaghfir 92.2 94 |(% style="width:188px" %)__PurgeJob__|(% style="width:81px" %)[[image:2021-04-22_14h22_15.png]]|(% style="width:721px" %)Deletes jobs older than a given date.
95 |(% style="width:188px" %)__BackupBDD__|(% style="width:81px" %)[[image:2021-04-22_14h24_03.png]]|(% style="width:721px" %)Dumps database for a backup.
96 |(% style="width:188px" %)__PurgeTrackings__|(% style="width:81px" %)[[image:2021-04-22_14h22_22.png]]|(% style="width:721px" %)Deletes trackings older than a certain date.
97 |(% style="width:188px" %)__PurgeFiles__|(% style="width:81px" %)[[image:2021-04-22_14h22_30.png]]|(% style="width:721px" %)Deletes files or directories older than a certain date.
Outhman Moustaghfir 100.2 98 |(% style="width:188px" %)__Zip__|(% style="width:81px" %) [[image:ZipConnectors.png||height="51" width="51"]]|(% style="width:721px" %)Create a zip format for input files.
99 |(% style="width:188px" %)__UnZip__|(% style="width:81px" %) [[image:UNZipConnectors.png||height="48" width="48"]]|(% style="width:721px" %)Unzip the input zip file in a directory.
Outhman Moustaghfir 83.99 100
Achraf El Kari 18.1 101 == Timers ==
Achraf El Kari 2.4 102
Outhman Moustaghfir 100.7 103 As its name says, Timers connectors set a timer to execute the next connector or launch a scenario ...
Achraf El Kari 2.4 104
Outhman Moustaghfir 89.7 105 Timers connectors are listed as below :
Outhman Moustaghfir 89.6 106
Outhman Moustaghfir 92.2 107 |(% style="width:155px" %)**Timers connectors**|(% style="width:72px" %)**Icon**|(% style="width:762px" %)**Description**
Outhman Moustaghfir 92.6 108 |(% style="width:155px" %)__Wait__|(% style="width:72px" %)[[image:2021-04-22_14h40_14.png]]|(% style="width:762px" %)Waits for a given time.
109 |(% style="width:155px" %)__Wait Until__|(% style="width:72px" %)[[image:2021-04-22_14h40_19.png]]|(% style="width:762px" %)Waits Until a certain date.
Outhman Moustaghfir 89.7 110
Achraf El Kari 1.3 111 = Gateways =
Achraf El Kari 1.1 112
Outhman Moustaghfir 92.8 113 Gateways is a BPMN notation used to control how a process flows. Connected by sequence flows, a gateway acts as a decision point that decides which (outgoing) sequence flow to take based on the result of the evaluation of condition(s) specified.
Outhman Moustaghfir 92.7 114
Outhman Moustaghfir 76.71 115 == Inclusive gateway ==
Achraf El Kari 1.1 116
Outhman Moustaghfir 93.2 117 [[image:2021-04-22_14h55_44.png]]
Outhman Moustaghfir 92.9 118
Outhman Moustaghfir 96.6 119 The inclusive gateway (or "OR gateway")is used to create alternatives routes, but also parallel ones inside a process flow. Contrary to the exclusive gateway, all condition expressions are evaluated. Whilst the Inclusive Gateway can be used to show that all paths must be taken, it should be used in such a way that at least one of the paths is taken.
Outhman Moustaghfir 92.9 120
Outhman Moustaghfir 76.71 121 == Exclusive gateway ==
Achraf El Kari 1.1 122
Outhman Moustaghfir 96.2 123 [[image:2021-04-22_14h55_30.png]]
Outhman Moustaghfir 93.13 124
125
Outhman Moustaghfir 96.2 126 The exclusive gateway accepts multiple inputs and outputs. We abbreviate “exclusive gateway” as **XOR**. It also evaluates the process state and divides the flow into multiple paths mutually exclusive. The flow takes the first input that satisfies all calculated conditions.
127
Achraf El Kari 1.3 128 == parallel gateway ==
129
Outhman Moustaghfir 96.2 130 [[image:2021-04-22_14h55_22.png]]
131
Outhman Moustaghfir 96.6 132 The parallel gateway (or the "AND gateway" ) is mainly used to synchronize parallel flows and create other parallel ones. These gateways create parallel paths without verifying conditions. each output sequential flow is passed through this gateway. About input flows, the parallel gateway waits for all other input flows before triggering the sequence of output flows. 
Outhman Moustaghfir 96.2 133
Achraf El Kari 108.1 134 = [[Variables>>doc:User Guide.The iXPath BPMN.Variables.WebHome]] =
Achraf El Kari 1.3 135
Outhman Moustaghfir 98.5 136 It means the variables that are used to describe some system or local values in iXPath App.
137
138 There are 2 types of variables:
139
140 * System Variables.
141 * Local Variables.
142
Outhman Moustaghfir 100.5 143 To call a certain variable named "var", we use ${} as ${var}.
144
Achraf El Kari 1.3 145 == System variables ==
146
Outhman Moustaghfir 100.5 147 System variables define some default values in the system, and they can be often called by users.
Outhman Moustaghfir 98.5 148
Outhman Moustaghfir 100.5 149 Here is the list of all known system variables:
150
Outhman Moustaghfir 100.8 151 1. At the declaration of the scenario:
152 1*. iXSession: it returns the ID of the current session.
153 1*. iXSessionPath : gets the Path of the session folder.
154 1*. env : name of the environment.
Outhman Moustaghfir 103.2 155 1*. inputFile : this variable collect all input files in one list.
Assala Chmiti 107.1 156 1*. iXEnvPath : Env's path.
Outhman Moustaghfir 100.5 157 1. For a **mail listener : **
Outhman Moustaghfir 100.6 158 1*. iXFrom : refers to the sender of the mail.
159 1*. iXSubject : refers to the mail subject.
160 1. For an **AS2 listener **: 
Outhman Moustaghfir 100.11 161 1*. iXFrom : return the value of the AS2 sender.
Outhman Moustaghfir 101.4 162 1. All connectors declare a system variable of type BpmnFile, it will be explained by details in the "variables" rubric.
Outhman Moustaghfir 100.5 163
Achraf El Kari 1.3 164 == Local variables ==
165
Outhman Moustaghfir 101.2 166 For a need to make the concept of variables more extensible, local variables come to offer the possibility of creating and calling new variables.
Outhman Moustaghfir 100.12 167
Outhman Moustaghfir 101.2 168 In order to set a new variable, the user may go through this line of code :
169
Outhman Moustaghfir 102.1 170 {{code language="XML"}}
Outhman Moustaghfir 105.2 171 <xsl:value-of select=" ixf:SetVar('Var', 'var Number 1')"></xsl:value-of>
Outhman Moustaghfir 102.1 172
Outhman Moustaghfir 101.2 173 {{/code}}
174
Outhman Moustaghfir 102.1 175 here, we created a local variable named __'Var'__ with value of __"var number 1".__
Outhman Moustaghfir 101.3 176
Outhman Moustaghfir 101.4 177 To get this variable '__Var'__ from XSL file :
178
Outhman Moustaghfir 102.1 179 {{code language="XML"}}
Outhman Moustaghfir 102.2 180 <xsl:value-of select="ixf:getVar('Var')"></xsl:value-of>
Outhman Moustaghfir 102.1 181 {{/code}}
Outhman Moustaghfir 101.4 182
Achraf El Kari 1.3 183 = Conditions =
Outhman Moustaghfir 102.1 184
Outhman Moustaghfir 102.3 185 iXPath supports the usual logical conditions from mathematics like : a<b , a = b ...
Outhman Moustaghfir 102.2 186
Outhman Moustaghfir 102.3 187 Conditions hold the decision to execute a connector or not.
Outhman Moustaghfir 102.2 188
Outhman Moustaghfir 102.3 189 Eg of condition :
Outhman Moustaghfir 102.2 190
Outhman Moustaghfir 102.4 191 Var == "My real variable"
Outhman Moustaghfir 102.3 192
Outhman Moustaghfir 102.4 193 In the "Conditions" rubric, we will give you the entire details about conditions and how to use them perfectly.
Outhman Moustaghfir 102.3 194
195
Outhman Moustaghfir 102.4 196
Outhman Moustaghfir 102.2 197
This wiki is hosted and managed by iXPath
Powered by XWiki 13.3 debian