https://www.international-presence.com/wikidocs/api.php?action=feedcontributions&user=Admin&feedformat=atomPresenceWiki - User contributions [en]2024-03-28T21:15:24ZUser contributionsMediaWiki 1.23.9https://www.international-presence.com/wikidocs/index.php?title=Jar_ManagerJar Manager2010-08-24T11:47:23Z<p>Admin: </p>
<hr />
<div>{{AdminClient}}<br />
<br />
The Jar Manager is a component of the Presence Administration Client which allows the user to import external Java archive files into the Presence database. Because they are stored in a central repository libraries can, once imported, be referenced by any process in the Presence installation.<br />
<br />
To access the Jar Manager:<br />
<br />
* From the Administration Console [[Menu Options|Menu]]: Tools > Jar Manager<br />
<br />
<br />
http://www.international-presence.com/wikidocs/images/jar_manager.png<br />
<br />
To import a new Jar, click the "Import Jar" button, which will launch a file browser - select the file you wish to import and click okay.<br />
<br />
Right-clicking on the list of Jars brings up the following pop-up menu:<br />
<br />
http://www.international-presence.com/wikidocs/images/jar_manager_popup_1.png<br />
<br />
* '''Refresh Jar List''' - refreshes the currently displayed list of imported Jars.<br />
* '''Import Jar''' - performs the same action as clicking the "Import Jar" button.<br />
* '''Add Loose Classes''' - imports loose Java classes that are not bundled into an archive file.<br />
* '''Remove Jar''' - permanently deletes the selected Jar.<br />
<br />
When a Jar is selected a tree view of the structure of the archive file is displayed in the right-hand pane, allowing you to inspect or choose the contents.<br />
<br />
Right clicking on an item will bring up the following menu options:<br />
<br />
* '''Verify Class''' - if a class is selected, this option allows the user to verify that the class can be loaded, and will display information about it such as which interfaces it implements and which class it extends.<br />
* '''Remove class''' - removes the selected class from the archive.<br />
* '''Remove resource''' - removes the selected resource (non Java class) from the archive.<br />
* '''Remove package''' - removes the selected package and any contained classes or resources.<br />
<br />
The last three options will only be available if an appropriate item has been selected, and the user is given a warning message before proceeding.<br />
<br />
<br />
{{AdminClientNavigation}}</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=DebugDebug2010-08-24T11:46:14Z<p>Admin: </p>
<hr />
<div>{{AdminClient}}<br />
<br />
<br />
Before putting a Task on the [[Live Tasks Queue]] or enabling it to be called [[On Demand]], it is typically a good idea to test it out and make sure it's doing what you expect it to.<br />
<br />
This is where the Presence Debug Tool comes in handy. The Debug Tool allows you to step through the individual [[Task Elements]] one by one, examine the information that is passed between them, and view any logging information.<br />
<br />
=== Launching the Debug Tool ===<br />
<br />
To launch the Debug Tool, you first need to have the Task open and the appropriate tab selected. There are three ways to begin debugging the Task:<br />
<br />
- Click on the Debug Icon http://www.international-presence.com/wikidocs/images/debug_1.gif<br />
<br />
- Right click on the Task Design View (not on a [[Task Element]]) and select Debug from the pop-up menu<br />
<br />
- Click on the "Task" menu at the top of the Administration Client, and select "Debug Current Task".<br />
<br />
There is also a "Debug on..." option for the second and third methods. This allows you to select a server to debug the Task on if you have a multi-server environment.<br />
<br />
=== Using the Debug Tool ===<br />
<br />
Here is a screen-shot of the Debug Tool:<br />
<br />
http://www.international-presence.com/wikidocs/images/debug_2.gif<br />
<br />
There are four main components to this window.<br />
<br />
<ol><br />
<li><b>Stepping Controls</b><br />
These are at the top of the left hand panel. The controls consist of a Pause, Step, Play, and Fast Play button.</li><br />
<li><b>Context Inspector</b><br />
This is below the Stepping Controls and lets you inspect the current [[Presence Context]]</li><br />
<li><b>Task Log Viewer</b><br />
This allows you to view any log output generated by the Task in real time.</li><br />
<li><b>Task View</b><br />
This is a smaller version of the [[Task]], and the [[Task Element]] that is about to run will be highlighted.</li><br />
</ol><br />
<br />
=== Stepping Controls ===<br />
<br />
* <b>Pause:</b> This pauses the currently running Task if you have clicked on "Play" or "Fast Play".<br />
<br />
* <b>Step:</b> This executes the currently active [[Task Element]], highlights the next in the sequence, and waits for the user to press Step again.<br />
<br />
* <b>Play</b> This executes the entire Task, highlighting the currently executing [[Task Element]] as it proceeds through the sequence.<br />
<br />
* <b>Fast Play</b> This runs the remainder of the Task without any visual feedback as to where in the Task it is currently running.<br />
<br />
=== Context Inspector ===<br />
<br />
This allows you to inspect items in the [[Presence Context]] by clicking on the item and viewing the value in the pane to the right. The [[Data Table]] is presented as a tree, with each column name as a branch and each row as a leaf within the branch.<br />
<br />
[[Variables]] are displayed under the Data Table and are split into Local and [[Task Variables]]. Global Variables are not displayed here.<br />
<br />
==== Internal Variables ====<br />
<br />
These are Variables generated by Presence.<br />
<br />
* '''${presence.servername}''' - The host name of the server that the Task is running on.<br />
* '''${datatable.columncount}''' - The number of columns in the current Data Table<br />
* '''${datatable.rowcount}''' - The number of rows in the current Data Table<br />
<br />
=== Task Log Viewer ===<br />
<br />
This displays the most recent log entries for the Task and should automatically update as the Task progresses. The buttons above the log pane perform the following functions:<br />
<br />
* '''Edit''' - edits the current Task Element<br />
* '''Delete''' - removes the selected log entries from the log file<br />
* '''Refresh''' - refreshes the logs from the log file.<br />
<br />
=== Task View ===<br />
<br />
This is a scaled down overview of the Task. The current Task Element is highlighted with a blue border. As you step into [[Nested Tasks]] the view will be updated with the schematic of the Nested Task.<br />
<br />
=== Breakpoints ===<br />
<br />
Presence allows you to add Breakpoints to your Tasks. To do so, in the Task Design View, right click on a [[Task Element]] and select "Add Breakpoint" from the pop-up menu.<br />
<br />
If you then click on the "Play" or "Fast Play" button, the Task will continue to run until it hits a Breakpoint, at which point it will stop and wait for user interaction.<br />
<br />
This feature is especially useful if you want to debug a specific part of Task but do not want to have to step through all the preceding [[Task Elements]].<br />
<br />
<br />
{{AdminClientNavigation}}</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=Data_FilterData Filter2010-08-24T10:58:58Z<p>Admin: /* Presence Deviation Engine */</p>
<hr />
<div>A key feature of Presence is the ability to filter data based on exception rules. These exception rules allow you to trigger different actions within a Presence Task depending on what has happened with your business data. For example, to perform different functions when new, changed or deleted data is detected.<br />
<br />
Exception reporting is vastly superior to historical reporting methodologies where large daily and weekly reports are produced and the recipient must sift the data manually looking for exceptions.<br />
<br />
==Presence Deviation Engine==<br />
<br />
The technology that enables this facility is called the Presence Deviation Engine (PDE). The Data Filter task element allows the configuration of the PDE data change or exception rules. <br />
<br />
Certain Presence Task elements, such as the Object Monitor and POP Scanner have PDE technology built into them allowing you to automatically filter out files / e-mails which have been processed before. <br />
<br />
For all other types of data - for example data returned by an SQL Query, XML Query or Web Service Call you create PDE exception rules by adding a Data Filter node.<br />
<br />
==Creating a Data Filter==<br />
<br />
To create a Data Filter in your Task just drag the Data Filter Task Element into your Task from the Data Access List:<br />
<br />
http://www.international-presence.com/wikidocs/images/data_filter_element.png<br />
<br />
You will then be presented with the following input dialog:<br />
<br />
http://www.international-presence.com/wikidocs/images/data_filter_dialog.png<br />
<br />
This allows you to identify:<br />
<br />
* Which columns identify unique rows<br />
* Which columns identify columns that may change their values.<br />
<br />
For example, the columns listed above describe a purchase order. The PURCHASE_ORDER_NUMBER is always unique - there can only be one row per purchase order. Therefore we know that whenever we see a new PURCHASE_ORDER_NUMBER the record can be considered to be new.<br />
<br />
However, it's possible that records may be altered by our sales system if the customer needs to modify the quantity after the purchase. Therefore if we want to identify changed records we need to keep an eye on the QUANTITY field. The CUSTOMER_ID will never change, and we are not interested in changes to the TOTAL_PRICE.<br />
<br />
Other options available are:<br />
<br />
* '''Stop execution flow when dataset is empty''' - if no data is available when the Data Filter is executed the Task will stop executing that [[Execution Path]]. If there is data but it does not match the filter criteria - for example there is no new data to process - that path will not be executed. Otherwise all paths will execute with empty data.<br />
* '''Replace comparison data with latest data after checking differences''' - This is the default option and allows "rolling" comparison data. The alternative is fixed comparison data so comparisons are made against a static base dataset.<br />
* '''Encrypt stored comparison data''' - if selected data will be encrypted before being written to the Presence database.<br />
* '''Clear Comparison Data''' - clears any existing comparison data for this node. The next time it runs any data seen will be considered new.<br />
<br />
Here is what the Data Filter looks like within a Task:<br />
<br />
<br />
http://www.international-presence.com/wikidocs/images/data_filter_in_task.png<br />
<br />
When joining the Data Filter to a subsequent node you will be prompted to specify which Data Set you would like to be passed to that Node in the [[Presence Context]]:<br />
<br />
http://www.international-presence.com/wikidocs/images/data_filter_datatype_prompt.png<br />
<br />
And the selection will be illustrated with an icon on the link, as in the following example:<br />
<br />
http://www.international-presence.com/wikidocs/images/data_filter_in_task_2.png<br />
<br />
In this case any data considered "new" - i.e. with a PURCHASE_ORDER_NUMBER that has not been seen before - will be passed to the Node labelled "Process New POs". Any data considered "changed" - meaning it contains a previously recognised PURCHASE_ORDER_NUMBER but the QUANTITY field has changed since the last query - will be passed to the "Process Updated POs" Node.<br />
<br />
=== Comparison Data Information ===<br />
<br />
The comparison data is stored internally in a table called APP.FILTERCOMPARISONDATASTORE. Each data filter node has its own record which contains all previously seen data in the form of a BLOB field.<br />
<br />
When importing and exporting Tasks you will be given the option to also export (or import) the comparison data associated with the Task.<br />
<br />
==Snapshot or Base Data==<br />
<br />
The Data Filter takes a snapshot of the data returned by your SQL or XML queries. This snapshot we refer to as the PDE "Base Data". When a Task runs again, it checks the Base Data against the new data from the query. Depending on the rules you have setup in the Data Filter it can then take one or more different actions. For example we can take one set of actions if there are New rows of data, another set of actions if data has Changed, another if we find that some data has been removed from the list and so on. <br />
<br />
Without a Data Filter node, Presence will continually report on all items returned by the query. <br />
<br />
The Base Data is NOT saved until the task has completed. If a task fails due to an exception error (either in Debug Mode or live) the Base Data is not updated.<br />
<br />
<br />
{{DataTableNodes}}</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=Data_FilterData Filter2010-08-24T10:55:01Z<p>Admin: /* Creating a Data Filter */</p>
<hr />
<div>A key feature of Presence is the ability to filter data based on exception rules. These exception rules allow you to trigger different actions within a Presence Task depending on what has happened with your business data. For example, to perform different functions when new, changed or deleted data is detected.<br />
<br />
Exception reporting is vastly superior to historical reporting methodologies where large daily and weekly reports are produced and the recipient must sift the data manually looking for exceptions.<br />
<br />
==Presence Deviation Engine==<br />
<br />
The technology that enables this facility is called the Presence Deviation Engine (PDE). The Date Filter task element allows the configuration of the PDE data change or exception rules. <br />
<br />
Certain Presence Task elements, such as the Object Monitor and POP Scanner have PDE technology built into them allowing you to automatically filter out files / e-mails which have been processed before. <br />
<br />
For all other types of data - for example data returned by an SQL Query, XML Query or Web Service Call you create PDE exception rules by adding a Data Filter node.<br />
<br />
==Creating a Data Filter==<br />
<br />
To create a Data Filter in your Task just drag the Data Filter Task Element into your Task from the Data Access List:<br />
<br />
http://www.international-presence.com/wikidocs/images/data_filter_element.png<br />
<br />
You will then be presented with the following input dialog:<br />
<br />
http://www.international-presence.com/wikidocs/images/data_filter_dialog.png<br />
<br />
This allows you to identify:<br />
<br />
* Which columns identify unique rows<br />
* Which columns identify columns that may change their values.<br />
<br />
For example, the columns listed above describe a purchase order. The PURCHASE_ORDER_NUMBER is always unique - there can only be one row per purchase order. Therefore we know that whenever we see a new PURCHASE_ORDER_NUMBER the record can be considered to be new.<br />
<br />
However, it's possible that records may be altered by our sales system if the customer needs to modify the quantity after the purchase. Therefore if we want to identify changed records we need to keep an eye on the QUANTITY field. The CUSTOMER_ID will never change, and we are not interested in changes to the TOTAL_PRICE.<br />
<br />
Other options available are:<br />
<br />
* '''Stop execution flow when dataset is empty''' - if no data is available when the Data Filter is executed the Task will stop executing that [[Execution Path]]. If there is data but it does not match the filter criteria - for example there is no new data to process - that path will not be executed. Otherwise all paths will execute with empty data.<br />
* '''Replace comparison data with latest data after checking differences''' - This is the default option and allows "rolling" comparison data. The alternative is fixed comparison data so comparisons are made against a static base dataset.<br />
* '''Encrypt stored comparison data''' - if selected data will be encrypted before being written to the Presence database.<br />
* '''Clear Comparison Data''' - clears any existing comparison data for this node. The next time it runs any data seen will be considered new.<br />
<br />
Here is what the Data Filter looks like within a Task:<br />
<br />
<br />
http://www.international-presence.com/wikidocs/images/data_filter_in_task.png<br />
<br />
When joining the Data Filter to a subsequent node you will be prompted to specify which Data Set you would like to be passed to that Node in the [[Presence Context]]:<br />
<br />
http://www.international-presence.com/wikidocs/images/data_filter_datatype_prompt.png<br />
<br />
And the selection will be illustrated with an icon on the link, as in the following example:<br />
<br />
http://www.international-presence.com/wikidocs/images/data_filter_in_task_2.png<br />
<br />
In this case any data considered "new" - i.e. with a PURCHASE_ORDER_NUMBER that has not been seen before - will be passed to the Node labelled "Process New POs". Any data considered "changed" - meaning it contains a previously recognised PURCHASE_ORDER_NUMBER but the QUANTITY field has changed since the last query - will be passed to the "Process Updated POs" Node.<br />
<br />
=== Comparison Data Information ===<br />
<br />
The comparison data is stored internally in a table called APP.FILTERCOMPARISONDATASTORE. Each data filter node has its own record which contains all previously seen data in the form of a BLOB field.<br />
<br />
When importing and exporting Tasks you will be given the option to also export (or import) the comparison data associated with the Task.<br />
<br />
==Snapshot or Base Data==<br />
<br />
The Data Filter takes a snapshot of the data returned by your SQL or XML queries. This snapshot we refer to as the PDE "Base Data". When a Task runs again, it checks the Base Data against the new data from the query. Depending on the rules you have setup in the Data Filter it can then take one or more different actions. For example we can take one set of actions if there are New rows of data, another set of actions if data has Changed, another if we find that some data has been removed from the list and so on. <br />
<br />
Without a Data Filter node, Presence will continually report on all items returned by the query. <br />
<br />
The Base Data is NOT saved until the task has completed. If a task fails due to an exception error (either in Debug Mode or live) the Base Data is not updated.<br />
<br />
<br />
{{DataTableNodes}}</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=Data_FilterData Filter2010-08-24T10:52:28Z<p>Admin: /* Creating a Data Filter */</p>
<hr />
<div>A key feature of Presence is the ability to filter data based on exception rules. These exception rules allow you to trigger different actions within a Presence Task depending on what has happened with your business data. For example, to perform different functions when new, changed or deleted data is detected.<br />
<br />
Exception reporting is vastly superior to historical reporting methodologies where large daily and weekly reports are produced and the recipient must sift the data manually looking for exceptions.<br />
<br />
==Presence Deviation Engine==<br />
<br />
The technology that enables this facility is called the Presence Deviation Engine (PDE). The Date Filter task element allows the configuration of the PDE data change or exception rules. <br />
<br />
Certain Presence Task elements, such as the Object Monitor and POP Scanner have PDE technology built into them allowing you to automatically filter out files / e-mails which have been processed before. <br />
<br />
For all other types of data - for example data returned by an SQL Query, XML Query or Web Service Call you create PDE exception rules by adding a Data Filter node.<br />
<br />
==Creating a Data Filter==<br />
<br />
To create a Data Filter in your Task just drag the Data Filter Task Element into your Task from the Data Access List:<br />
<br />
http://www.international-presence.com/wikidocs/images/data_filter_element.png<br />
<br />
You will then be presented with the following input dialog:<br />
<br />
http://www.international-presence.com/wikidocs/images/data_filter_dialog.png<br />
<br />
This allows you to identify:<br />
<br />
* Which columns identify unique rows<br />
* Which columns identify columns that may change their values.<br />
<br />
For example, the columns listed above describe a purchase order. The PURCHASE_ORDER_NUMBER is always unique - there can only be one row per purchase order. Therefore we know that whenever we see a new PURCHASE_ORDER_NUMBER the record can be considered to be new.<br />
<br />
However, it's possible that records may be altered by our sales system if the customer needs to modify the quantity after the purchase. Therefore if we want to identify changed records we need to keep an eye on the QUANTITY field. The CUSTOMER_ID will never change, and we are not interested in changes to the TOTAL_PRICE.<br />
<br />
Other options available are:<br />
<br />
* '''Stop execution flow when dataset is empty''' - if no data is available when the Data Filter is executed the Task will stop executing that [[Execution Path]]. If there is data but it does not match the filter criteria - for example there is no new data to process - that path will not be executed. Otherwise all paths will execute with empty data.<br />
* '''Replace comparison data with latest data after checking differences''' - This is the default option and allows "rolling" comparison data. The alternative is fixed comparison data so comparisons are made against a static base dataset.<br />
* '''Encrypt stored comparison data''' - if selected data will be encrypted before being written to the Presence database.<br />
<br />
<br />
Here is what the Data Filter looks like within a Task:<br />
<br />
<br />
http://www.international-presence.com/wikidocs/images/data_filter_in_task.png<br />
<br />
When joining the Data Filter to a subsequent node you will be prompted to specify which Data Set you would like to be passed to that Node in the [[Presence Context]]:<br />
<br />
http://www.international-presence.com/wikidocs/images/data_filter_datatype_prompt.png<br />
<br />
And the selection will be illustrated with an icon on the link, as in the following example:<br />
<br />
http://www.international-presence.com/wikidocs/images/data_filter_in_task_2.png<br />
<br />
In this case any data considered "new" - i.e. with a PURCHASE_ORDER_NUMBER that has not been seen before - will be passed to the Node labelled "Process New POs". Any data considered "changed" - meaning it contains a previously recognised PURCHASE_ORDER_NUMBER but the QUANTITY field has changed since the last query - will be passed to the "Process Updated POs" Node.<br />
<br />
==Snapshot or Base Data==<br />
<br />
The Data Filter takes a snapshot of the data returned by your SQL or XML queries. This snapshot we refer to as the PDE "Base Data". When a Task runs again, it checks the Base Data against the new data from the query. Depending on the rules you have setup in the Data Filter it can then take one or more different actions. For example we can take one set of actions if there are New rows of data, another set of actions if data has Changed, another if we find that some data has been removed from the list and so on. <br />
<br />
Without a Data Filter node, Presence will continually report on all items returned by the query. <br />
<br />
The Base Data is NOT saved until the task has completed. If a task fails due to an exception error (either in Debug Mode or live) the Base Data is not updated.<br />
<br />
<br />
{{DataTableNodes}}</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=Presence_IntroductionPresence Introduction2010-07-22T16:25:25Z<p>Admin: </p>
<hr />
<div>Please note that we are reorganising our main page - view the update version [[New Main Page|here]].<br />
<br />
=== What is Presence? ===<br />
<br />
Presence was originally developed as an Integration, Monitoring and Alerting tool. Since its first release in 2000 it has expanded beyond its original purpose and is now a "do pretty much anything" tool.<br />
<br />
The aim of Presence is to allow users to create automated [[Tasks]] to perform a variety of process-led functions such as querying data sources, generating reports, sending emails etc, whilst eliminating the need for writing code. It is highly visual, intuitive, and can be picked up and used by just about anyone.<br />
<br />
Presence components are split into two categories - see [[Architecture]] for more details:<br />
<br />
=== Server Components ===<br />
<br />
<ul><br />
<li>[[Heartbeat Server]]</li><br />
<li>[[Database Server]]</li><br />
<li>[[Presence Server]]</li><br />
<li>[[Remote Program Call Server]]</li><br />
</ul><br />
<br />
=== Client Components ===<br />
<br />
<ul><br />
<li>[[Administration Client]]</li><br />
<li>[[Heartbeat Client]]</li><br />
</ul><br />
<br />
=== '''Who uses Presence?''' ===<br />
<br />
Our customer list includes the following organisations:<br />
<br />
<ul><br />
<li>Mitsubishi UK</li><br />
<li>Minnesota Department of Agriculture</li><br />
<li>Gerber Juice</li><br />
<li>Credomatic (Bank of South America)</li><br />
<li>Electro Andina</li><br />
<li>Spire Healthcare</li><br />
<li>Classic Hospitals</li><br />
<li>Citylink</li><br />
<li>Belshaw</li><br />
<li>Cummins UK</li><br />
<li>Miki Travel</li><br />
</ul><br />
<br />
For an overview of Presence from a less technical perspective please visit the [http://www.presencebpm.com Product Website].</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=Telex_/_Fax_400Telex / Fax 4002010-07-22T16:23:41Z<p>Admin: </p>
<hr />
<div>FAX/400 is a full-function fax system complete with built-in text editor for internal and external email, directory and distribution list management, and Biscom's proven enterprise FaxCom server solution for Windows NT/2000. FAX/400 also enables you to store standard graphics and text for commonly used forms, signatures, and documents.<br />
<br />
Product website: http://www.faxandemailsoftware.com</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=WSDLWSDL2010-07-21T16:11:14Z<p>Admin: </p>
<hr />
<div>WSDL stands for Web Service Description Language and is an XML standard for describing which Web Service operations are available from a particular server.<br />
<br />
In the case of Presence Web Service Tasks (i.e. Tasks that are made available to the outside world as Web Services) the operations exposed by the WSDL depend on the URL called, and this is related to the Presence Category structure. Calling the following URL:<br />
<br />
http://presenceserver/Presence.wsdl<br />
<br />
will display all Web Services available from Presence, as "Presence" is the root Category.<br />
<br />
The available services can be restricted by appending sub categories, of the form:<br />
<br />
http://presenceserver/Presence/Category_A/Category_B.wsdl and so on.<br />
<br />
Space characters are always replaced by underscores (_).</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=WSDLWSDL2010-07-21T16:09:12Z<p>Admin: </p>
<hr />
<div>WSDL stands for Web Service Description Language and is an XML standard for describing which Web Service operations are available from a particular server.<br />
<br />
In the case of Presence Web Service Tasks (i.e. Tasks that are made available to the outside world as Web Services) the operations exposed by the WSDL depend on the URL called, and this is related to the Presence Category structure. Calling the following URL:<br />
<br />
http://presenceserver/Presence.wsdl</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=Incoming_Web_Service_Requests_TutorialIncoming Web Service Requests Tutorial2010-07-21T16:05:08Z<p>Admin: /* Testing your Web Service */</p>
<hr />
<div>{{Tutorials}}<br />
<br />
This document gives a step-by-step guide to exposing a Presence [[Task]] as a Web Service.<br />
<br />
=== 1: Creating the Task ===<br />
<br />
The first step is to create our Task. For the purposes of this demonstration we will create a Web Service that calculates the circumference of a circle given the radius. The Task to do this is very simple and comprises of:<br />
<br />
# Start of Task Node<br />
# Require Variable Node - ${radius}<br />
# Set Variable Node - ${circumference}<br />
# End of Task Node<br />
<br />
The variable ${radius} will be an incoming parameter and ${circumference} will be an outgoing parameter.<br />
<br />
To calculate the circumference we call the following function in our Set Variable Node (3):<br />
<br />
&eval {"2 * ${radius} * PI"}<br />
<br />
Here is a view of the Task, which can be downloaded [http://www.international-presence.com/wikidocs/samples/Web_Service_Tutorial.zip here]:<br />
<br />
http://www.international-presence.com/wikidocs/images/calc_circumference_taskview.png<br />
<br />
=== 2: Creating the Web Service ===<br />
<br />
Once a Task is created exposing it as a Web Service is extremely straight forward. First launch the [[Live Tasks Queue]]. Click on the third tab (Web Service Processes) and then drag the Task into the main table. You'll then be presented with the Web Service Properties Dialog:<br />
<br />
<br />
http://www.international-presence.com/wikidocs/images/ws_tutorial_1.png<br />
<br />
* The alias represents the name of the Operation that will be called and is auto-generated based on the Task name. Feel free to change this, or leave it as it is.<br />
<br />
* It's always a good idea to add documentation to the Web Service itself and to any parameters.<br />
<br />
* Make sure "Task is active" is checked and that "One Way" is not checked.<br />
<br />
* Copy the [[WSDL]] location to your clipboard as you will need this later when calling the Web Service.<br />
<br />
* Click the "Get Task Parameters" button to map the incoming and outgoing variables to Web service parameters:<br />
<br />
http://www.international-presence.com/wikidocs/images/ws_tutorial_2.png<br />
<br />
Click okay to return to the Web Services properties screen. You can double click on the parameters to set the data type (which should be "double" for both parameters) and to add documentation.<br />
<br />
This should be all you need to do - click Okay and you should see your Task in the Web Services list.<br />
<br />
That's it!<br />
<br />
=== 3: Testing your Web Service ===<br />
<br />
Now to test out our newly created Web Service. Create another new Task and drag a [[Web Services Nodes|Web Service Call]] Node into the Task canvas. The first thing we need to do is set the WSDL location which you copied from the Web Service properties dialog. Click the "New" button, select "On the Internet" and enter the URL. This will be of the form:<br />
<br />
http://[servername]:[port]/[wsdl_location]<br />
<br />
Where [servername] is the hostname of a machine running the Presence [[HTTP Server]], [port] is the port it is listening on - this is 80 by default unless you have changed it in the http.config file, and [wsdl_location] is the WSDL document location displayed on the Web Service Properties dialog.<br />
<br />
So, here at the Presence development labs we have a server named "presenceserver" and this is the WSDL location we used for this project:<br />
<br />
http://presenceserver/Presence/Web_Service_Tutorial.wsdl (don't click this - it won't work).<br />
<br />
Note that the port is not included in the URL as 80 is the default port for HTTP requests and is therefore unnecessary.<br />
<br />
Click "Okay" and after a small delay you should see a web service tree like the following, which describes the service, port and operations available for this WSDL:<br />
<br />
http://www.international-presence.com/wikidocs/images/ws_tutorial_3.png<br />
<br />
Double click our Operation (CalculateCircumferenceWS) to specify that this is the operation we want to call, then click the "Input" tab. Select the "radius" element - which is bound to the ${radius} variable in our Web Service Task - and enter a value in the text field.<br />
<br />
Click the "Output" tab and drag the <circumference> tag into the list on the right.<br />
<br />
Finally, click the "Test" tab and then click the "Test" button, and you should see the result of your called operation in the table below. You can check the XML that was sent to and received from the server by clicking the "Input Document" and "Output Document" tabs.<br />
<br />
=== Troubleshooting ===<br />
<br />
If you have any queries or problems following or implementing this tutorial we'd be pleased to assist. Please drop an email to [mailto:pryor@presencebpm.com Matt Pryor].</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=Incoming_Web_Service_Requests_TutorialIncoming Web Service Requests Tutorial2010-07-21T16:04:53Z<p>Admin: /* Troubleshooting */</p>
<hr />
<div>{{Tutorials}}<br />
<br />
This document gives a step-by-step guide to exposing a Presence [[Task]] as a Web Service.<br />
<br />
=== 1: Creating the Task ===<br />
<br />
The first step is to create our Task. For the purposes of this demonstration we will create a Web Service that calculates the circumference of a circle given the radius. The Task to do this is very simple and comprises of:<br />
<br />
# Start of Task Node<br />
# Require Variable Node - ${radius}<br />
# Set Variable Node - ${circumference}<br />
# End of Task Node<br />
<br />
The variable ${radius} will be an incoming parameter and ${circumference} will be an outgoing parameter.<br />
<br />
To calculate the circumference we call the following function in our Set Variable Node (3):<br />
<br />
&eval {"2 * ${radius} * PI"}<br />
<br />
Here is a view of the Task, which can be downloaded [http://www.international-presence.com/wikidocs/samples/Web_Service_Tutorial.zip here]:<br />
<br />
http://www.international-presence.com/wikidocs/images/calc_circumference_taskview.png<br />
<br />
=== 2: Creating the Web Service ===<br />
<br />
Once a Task is created exposing it as a Web Service is extremely straight forward. First launch the [[Live Tasks Queue]]. Click on the third tab (Web Service Processes) and then drag the Task into the main table. You'll then be presented with the Web Service Properties Dialog:<br />
<br />
<br />
http://www.international-presence.com/wikidocs/images/ws_tutorial_1.png<br />
<br />
* The alias represents the name of the Operation that will be called and is auto-generated based on the Task name. Feel free to change this, or leave it as it is.<br />
<br />
* It's always a good idea to add documentation to the Web Service itself and to any parameters.<br />
<br />
* Make sure "Task is active" is checked and that "One Way" is not checked.<br />
<br />
* Copy the [[WSDL]] location to your clipboard as you will need this later when calling the Web Service.<br />
<br />
* Click the "Get Task Parameters" button to map the incoming and outgoing variables to Web service parameters:<br />
<br />
http://www.international-presence.com/wikidocs/images/ws_tutorial_2.png<br />
<br />
Click okay to return to the Web Services properties screen. You can double click on the parameters to set the data type (which should be "double" for both parameters) and to add documentation.<br />
<br />
This should be all you need to do - click Okay and you should see your Task in the Web Services list.<br />
<br />
That's it!<br />
<br />
=== Testing your Web Service ===<br />
<br />
Now to test out our newly created Web Service. Create another new Task and drag a [[Web Services Nodes|Web Service Call]] Node into the Task canvas. The first thing we need to do is set the WSDL location which you copied from the Web Service properties dialog. Click the "New" button, select "On the Internet" and enter the URL. This will be of the form:<br />
<br />
http://[servername]:[port]/[wsdl_location]<br />
<br />
Where [servername] is the hostname of a machine running the Presence [[HTTP Server]], [port] is the port it is listening on - this is 80 by default unless you have changed it in the http.config file, and [wsdl_location] is the WSDL document location displayed on the Web Service Properties dialog.<br />
<br />
So, here at the Presence development labs we have a server named "presenceserver" and this is the WSDL location we used for this project:<br />
<br />
http://presenceserver/Presence/Web_Service_Tutorial.wsdl (don't click this - it won't work).<br />
<br />
Note that the port is not included in the URL as 80 is the default port for HTTP requests and is therefore unnecessary.<br />
<br />
Click "Okay" and after a small delay you should see a web service tree like the following, which describes the service, port and operations available for this WSDL:<br />
<br />
http://www.international-presence.com/wikidocs/images/ws_tutorial_3.png<br />
<br />
Double click our Operation (CalculateCircumferenceWS) to specify that this is the operation we want to call, then click the "Input" tab. Select the "radius" element - which is bound to the ${radius} variable in our Web Service Task - and enter a value in the text field.<br />
<br />
Click the "Output" tab and drag the <circumference> tag into the list on the right.<br />
<br />
Finally, click the "Test" tab and then click the "Test" button, and you should see the result of your called operation in the table below. You can check the XML that was sent to and received from the server by clicking the "Input Document" and "Output Document" tabs.<br />
<br />
=== Troubleshooting ===<br />
<br />
If you have any queries or problems following or implementing this tutorial we'd be pleased to assist. Please drop an email to [mailto:pryor@presencebpm.com Matt Pryor].</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=Incoming_Web_Service_Requests_TutorialIncoming Web Service Requests Tutorial2010-07-21T15:39:38Z<p>Admin: /* 1: Creating the Task */</p>
<hr />
<div>{{Tutorials}}<br />
<br />
This document gives a step-by-step guide to exposing a Presence [[Task]] as a Web Service.<br />
<br />
=== 1: Creating the Task ===<br />
<br />
The first step is to create our Task. For the purposes of this demonstration we will create a Web Service that calculates the circumference of a circle given the radius. The Task to do this is very simple and comprises of:<br />
<br />
# Start of Task Node<br />
# Require Variable Node - ${radius}<br />
# Set Variable Node - ${circumference}<br />
# End of Task Node<br />
<br />
The variable ${radius} will be an incoming parameter and ${circumference} will be an outgoing parameter.<br />
<br />
To calculate the circumference we call the following function in our Set Variable Node (3):<br />
<br />
&eval {"2 * ${radius} * PI"}<br />
<br />
Here is a view of the Task, which can be downloaded [http://www.international-presence.com/wikidocs/samples/Web_Service_Tutorial.zip here]:<br />
<br />
http://www.international-presence.com/wikidocs/images/calc_circumference_taskview.png<br />
<br />
=== 2: Creating the Web Service ===<br />
<br />
Once a Task is created exposing it as a Web Service is extremely straight forward. First launch the [[Live Tasks Queue]]. Click on the third tab (Web Service Processes) and then drag the Task into the main table. You'll then be presented with the Web Service Properties Dialog:<br />
<br />
<br />
http://www.international-presence.com/wikidocs/images/ws_tutorial_1.png<br />
<br />
* The alias represents the name of the Operation that will be called and is auto-generated based on the Task name. Feel free to change this, or leave it as it is.<br />
<br />
* It's always a good idea to add documentation to the Web Service itself and to any parameters.<br />
<br />
* Make sure "Task is active" is checked and that "One Way" is not checked.<br />
<br />
* Copy the [[WSDL]] location to your clipboard as you will need this later when calling the Web Service.<br />
<br />
* Click the "Get Task Parameters" button to map the incoming and outgoing variables to Web service parameters:<br />
<br />
http://www.international-presence.com/wikidocs/images/ws_tutorial_2.png<br />
<br />
Click okay to return to the Web Services properties screen. You can double click on the parameters to set the data type (which should be "double" for both parameters) and to add documentation.<br />
<br />
This should be all you need to do - click Okay and you should see your Task in the Web Services list.<br />
<br />
That's it!<br />
<br />
=== Testing your Web Service ===<br />
<br />
Now to test out our newly created Web Service. Create another new Task and drag a [[Web Services Nodes|Web Service Call]] Node into the Task canvas. The first thing we need to do is set the WSDL location which you copied from the Web Service properties dialog. Click the "New" button, select "On the Internet" and enter the URL. This will be of the form:<br />
<br />
http://[servername]:[port]/[wsdl_location]<br />
<br />
Where [servername] is the hostname of a machine running the Presence [[HTTP Server]], [port] is the port it is listening on - this is 80 by default unless you have changed it in the http.config file, and [wsdl_location] is the WSDL document location displayed on the Web Service Properties dialog.<br />
<br />
So, here at the Presence development labs we have a server named "presenceserver" and this is the WSDL location we used for this project:<br />
<br />
http://presenceserver/Presence/Web_Service_Tutorial.wsdl (don't click this - it won't work).<br />
<br />
Note that the port is not included in the URL as 80 is the default port for HTTP requests and is therefore unnecessary.<br />
<br />
Click "Okay" and after a small delay you should see a web service tree like the following, which describes the service, port and operations available for this WSDL:<br />
<br />
http://www.international-presence.com/wikidocs/images/ws_tutorial_3.png<br />
<br />
Double click our Operation (CalculateCircumferenceWS) to specify that this is the operation we want to call, then click the "Input" tab. Select the "radius" element - which is bound to the ${radius} variable in our Web Service Task - and enter a value in the text field.<br />
<br />
Click the "Output" tab and drag the <circumference> tag into the list on the right.<br />
<br />
Finally, click the "Test" tab and then click the "Test" button, and you should see the result of your called operation in the table below. You can check the XML that was sent to and received from the server by clicking the "Input Document" and "Output Document" tabs.<br />
<br />
=== Troubleshooting ===<br />
<br />
If you have any queries or problems running this tutorial we'd be pleased to assist. Please drop an email to [mailto:pryor@presencebpm.com Matt Pryor].</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=Web_Services_NodesWeb Services Nodes2010-07-21T15:38:27Z<p>Admin: /* See Also */</p>
<hr />
<div>{{UnderConstruction|Screenshots are required}}<br />
<br />
<br />
==Introduction to Web Services and SOAP==<br />
<br />
A web service is any piece of software that makes itself available over the internet and uses a standardized XML messaging system. <br />
<br />
Web services range from such major services as storage management and customer relationship management (CRM) down to much more limited services such as the furnishing of a currency conversion rate and the checking of bids for an auction item. <br />
<br />
The accelerating creation and availability of these services is an important trend in the business world. <br />
<br />
XML is used to encode all communications to a web service. For example, a client invokes a web service by sending an XML message, then waits for a corresponding XML response. <br />
<br />
Because all communication is in XML, web services are not tied to any one operating system or programming language--Java can talk with Perl; Windows applications can talk with Unix applications.<br />
<br />
A WSDL (Web Services Description Language) file describes the public interface to the web service. <br />
<br />
This is an XML-based service description, which defines how external parties should communicate with the web service; namely, the protocol bindings and message formats required to interact with the web services listed in its directory. <br />
<br />
The supported operations and messages are described abstractly, and then bound to a concrete network protocol and message format.<br />
<br />
The Web Service Call can invoke Web Services using SOAP (Simple Object Access Protocol). SOAP is a lightweight XML-based messaging protocol used to encode the information in Web service request and response messages before sending them over a network. <br />
<br />
SOAP defines an envelope format and various rules for describing its contents.<br />
<br />
The Web Service Call task element allows you to invoke SOAP Web Services from Presence Tasks. The Web Service Call uses WSDL documents to create templates for specifying the request and response message.<br />
<br />
<hr/><br />
<br />
==Creating a Web Service Call==<br />
<br />
To create a Web Service Call, drag the icon from the Data Access / Web Services area of the Task Elements list.<br />
<br />
The Web Service Element dialog appears.<br />
<br />
==WSDL Location Tab==<br />
<br />
'''Name''' Name for the Web Service Call.<br />
<br />
'''WSDL Location''' The location of the WSDL document must be specified here. The WSDL document can be accessed from the internet or from a local file.<br />
<br />
The results of a Web Service call are returned in Data Table columns in the Presence Context. The Web Service task element can empty the Presence Context data table before the call or can merge the results of the call with the existing datatable, based on the selection in this panel.<br />
<br />
After specifying a WSDL file, an operation (along with any associated service and port) must be selected in the WSDL object tree:<br />
<br />
'''Information window''' - Additional detail about the selected object and it's usage can be found in the information box.<br />
<br />
If an operation is selected, the creation of the input message and querying of the output message can be defined. As the SOAP messages used for input and output are XML messages, the setup of the configuration if the input and output are similar to the XML Document Writer and the XML Query task element. To select an operation, double click it from the SOAP structure tree.<br />
<br />
==Input Tab==<br />
<br />
The input tab allows you to specify which nodes in the schema of the input SOAP message should be matched with which values, as well as controlling how those elements should be repeated and the rules that should be applied to determine whether they should be included or omitted.<br />
<br />
===Text Value Tab===<br />
<br />
To specify a value for a node, click on the node in the schema, then enter the value into the "Text Value" tab on the right hand pane. Values can be string literals, context variable references or data column references.<br />
<br />
===Element repetition tab===<br />
<br />
This tab allows you to control the repetition of the selected element. Select "Repeat occurrences of this element" to enable repetition. This will display a list of currently available data columns that are produced from the Task that is currently being edited. By checking a column this will result in the selected element to be repeated for each unique value of that element.<br />
<br />
===Inclusion Rules Tab===<br />
<br />
It is also possible to specify whether or not to include the element, or attribute, depending on the values of certain variables or columns (or function results).<br />
<br />
==Output Tab==<br />
<br />
The output tab allows you to specify which elements should be included in the result datatable from the output SOAP message.<br />
<br />
To select a Column to be included with you result - First select from the tree an Element or Attribute (Field), then drag this field to the main white space on the right of the screen. <br />
<br />
You can do this for as many columns as you need, you could also drag the whole of a root element across if you wanted to report on multiple fields; to do this drag the Root Element instead.<br />
<br />
'''Change Alias Button''' - Use this button to change the heading of the column when the results are returned.<br />
<br />
'''Clear Alias Button''' will revertthe alias to the automatically generated Alias.<br />
<br />
'''Move Up Button''' Use this button to move the currently selected element up the pick list. Field names listed at the top will appear nearer to the left in the column list when your query results are returned.<br />
<br />
'''Move Down Button''' Use this button to move the currently selected element down the pick list. This has the effect of formatting the column closer to the right when the results are returned.<br />
<br />
'''Remove Column Button''' Use this button to remove the selected element from the pick list.<br />
<br />
As each Element is selected from the tree an Info panel provides details about the element, this is useful for understanding the document structure.<br />
<br />
==Test tab==<br />
<br />
'''Test Button''' - Press this button to test the Web Service Call. If the call is successful and there are results to be returned you should see them formatted in the table.<br />
<br />
The "Input Message" and "Output Message" tabs let you see the SOAP message source, which can be useful for tracking problems.<br />
<br />
== See Also ==<br />
<br />
Tutorial: [[Incoming Web Service Requests Tutorial]]<br />
<br />
{{DataAccess}}</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=Incoming_Web_Service_Requests_TutorialIncoming Web Service Requests Tutorial2010-07-21T15:31:25Z<p>Admin: /* Problems with Tutorial */</p>
<hr />
<div>{{Tutorials}}<br />
<br />
This document gives a step-by-step guide to exposing a Presence [[Task]] as a Web Service.<br />
<br />
=== 1: Creating the Task ===<br />
<br />
The first step is to create our Task. For the purposes of this demonstration we will create a Web Service that calculates the circumference of a circle given the radius. The Task to do this is very simple and comprises of:<br />
<br />
# Start of Task Node<br />
# Require Variable Node - ${radius}<br />
# Set Variable Node - ${circumference}<br />
# End of Task Node<br />
<br />
The variable ${radius} will be an incoming parameter and ${circumference} will be an outgoing parameter.<br />
<br />
To calculate the circumference we call the following function in our Set Variable Node (3):<br />
<br />
&eval {"2 * ${radius} * PI"}<br />
<br />
Here is a view of the Task, which can be downloaded [http://www.international-presence.com/wikidocs/samples/calc_circumference.zip here]:<br />
<br />
http://www.international-presence.com/wikidocs/images/calc_circumference_taskview.png<br />
<br />
=== 2: Creating the Web Service ===<br />
<br />
Once a Task is created exposing it as a Web Service is extremely straight forward. First launch the [[Live Tasks Queue]]. Click on the third tab (Web Service Processes) and then drag the Task into the main table. You'll then be presented with the Web Service Properties Dialog:<br />
<br />
<br />
http://www.international-presence.com/wikidocs/images/ws_tutorial_1.png<br />
<br />
* The alias represents the name of the Operation that will be called and is auto-generated based on the Task name. Feel free to change this, or leave it as it is.<br />
<br />
* It's always a good idea to add documentation to the Web Service itself and to any parameters.<br />
<br />
* Make sure "Task is active" is checked and that "One Way" is not checked.<br />
<br />
* Copy the [[WSDL]] location to your clipboard as you will need this later when calling the Web Service.<br />
<br />
* Click the "Get Task Parameters" button to map the incoming and outgoing variables to Web service parameters:<br />
<br />
http://www.international-presence.com/wikidocs/images/ws_tutorial_2.png<br />
<br />
Click okay to return to the Web Services properties screen. You can double click on the parameters to set the data type (which should be "double" for both parameters) and to add documentation.<br />
<br />
This should be all you need to do - click Okay and you should see your Task in the Web Services list.<br />
<br />
That's it!<br />
<br />
=== Testing your Web Service ===<br />
<br />
Now to test out our newly created Web Service. Create another new Task and drag a [[Web Services Nodes|Web Service Call]] Node into the Task canvas. The first thing we need to do is set the WSDL location which you copied from the Web Service properties dialog. Click the "New" button, select "On the Internet" and enter the URL. This will be of the form:<br />
<br />
http://[servername]:[port]/[wsdl_location]<br />
<br />
Where [servername] is the hostname of a machine running the Presence [[HTTP Server]], [port] is the port it is listening on - this is 80 by default unless you have changed it in the http.config file, and [wsdl_location] is the WSDL document location displayed on the Web Service Properties dialog.<br />
<br />
So, here at the Presence development labs we have a server named "presenceserver" and this is the WSDL location we used for this project:<br />
<br />
http://presenceserver/Presence/Web_Service_Tutorial.wsdl (don't click this - it won't work).<br />
<br />
Note that the port is not included in the URL as 80 is the default port for HTTP requests and is therefore unnecessary.<br />
<br />
Click "Okay" and after a small delay you should see a web service tree like the following, which describes the service, port and operations available for this WSDL:<br />
<br />
http://www.international-presence.com/wikidocs/images/ws_tutorial_3.png<br />
<br />
Double click our Operation (CalculateCircumferenceWS) to specify that this is the operation we want to call, then click the "Input" tab. Select the "radius" element - which is bound to the ${radius} variable in our Web Service Task - and enter a value in the text field.<br />
<br />
Click the "Output" tab and drag the <circumference> tag into the list on the right.<br />
<br />
Finally, click the "Test" tab and then click the "Test" button, and you should see the result of your called operation in the table below. You can check the XML that was sent to and received from the server by clicking the "Input Document" and "Output Document" tabs.<br />
<br />
=== Troubleshooting ===<br />
<br />
If you have any queries or problems running this tutorial we'd be pleased to assist. Please drop an email to [mailto:pryor@presencebpm.com Matt Pryor].</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=Incoming_Web_Service_Requests_TutorialIncoming Web Service Requests Tutorial2010-07-21T15:31:03Z<p>Admin: /* Testing your Web Service */</p>
<hr />
<div>{{Tutorials}}<br />
<br />
This document gives a step-by-step guide to exposing a Presence [[Task]] as a Web Service.<br />
<br />
=== 1: Creating the Task ===<br />
<br />
The first step is to create our Task. For the purposes of this demonstration we will create a Web Service that calculates the circumference of a circle given the radius. The Task to do this is very simple and comprises of:<br />
<br />
# Start of Task Node<br />
# Require Variable Node - ${radius}<br />
# Set Variable Node - ${circumference}<br />
# End of Task Node<br />
<br />
The variable ${radius} will be an incoming parameter and ${circumference} will be an outgoing parameter.<br />
<br />
To calculate the circumference we call the following function in our Set Variable Node (3):<br />
<br />
&eval {"2 * ${radius} * PI"}<br />
<br />
Here is a view of the Task, which can be downloaded [http://www.international-presence.com/wikidocs/samples/calc_circumference.zip here]:<br />
<br />
http://www.international-presence.com/wikidocs/images/calc_circumference_taskview.png<br />
<br />
=== 2: Creating the Web Service ===<br />
<br />
Once a Task is created exposing it as a Web Service is extremely straight forward. First launch the [[Live Tasks Queue]]. Click on the third tab (Web Service Processes) and then drag the Task into the main table. You'll then be presented with the Web Service Properties Dialog:<br />
<br />
<br />
http://www.international-presence.com/wikidocs/images/ws_tutorial_1.png<br />
<br />
* The alias represents the name of the Operation that will be called and is auto-generated based on the Task name. Feel free to change this, or leave it as it is.<br />
<br />
* It's always a good idea to add documentation to the Web Service itself and to any parameters.<br />
<br />
* Make sure "Task is active" is checked and that "One Way" is not checked.<br />
<br />
* Copy the [[WSDL]] location to your clipboard as you will need this later when calling the Web Service.<br />
<br />
* Click the "Get Task Parameters" button to map the incoming and outgoing variables to Web service parameters:<br />
<br />
http://www.international-presence.com/wikidocs/images/ws_tutorial_2.png<br />
<br />
Click okay to return to the Web Services properties screen. You can double click on the parameters to set the data type (which should be "double" for both parameters) and to add documentation.<br />
<br />
This should be all you need to do - click Okay and you should see your Task in the Web Services list.<br />
<br />
That's it!<br />
<br />
=== Testing your Web Service ===<br />
<br />
Now to test out our newly created Web Service. Create another new Task and drag a [[Web Services Nodes|Web Service Call]] Node into the Task canvas. The first thing we need to do is set the WSDL location which you copied from the Web Service properties dialog. Click the "New" button, select "On the Internet" and enter the URL. This will be of the form:<br />
<br />
http://[servername]:[port]/[wsdl_location]<br />
<br />
Where [servername] is the hostname of a machine running the Presence [[HTTP Server]], [port] is the port it is listening on - this is 80 by default unless you have changed it in the http.config file, and [wsdl_location] is the WSDL document location displayed on the Web Service Properties dialog.<br />
<br />
So, here at the Presence development labs we have a server named "presenceserver" and this is the WSDL location we used for this project:<br />
<br />
http://presenceserver/Presence/Web_Service_Tutorial.wsdl (don't click this - it won't work).<br />
<br />
Note that the port is not included in the URL as 80 is the default port for HTTP requests and is therefore unnecessary.<br />
<br />
Click "Okay" and after a small delay you should see a web service tree like the following, which describes the service, port and operations available for this WSDL:<br />
<br />
http://www.international-presence.com/wikidocs/images/ws_tutorial_3.png<br />
<br />
Double click our Operation (CalculateCircumferenceWS) to specify that this is the operation we want to call, then click the "Input" tab. Select the "radius" element - which is bound to the ${radius} variable in our Web Service Task - and enter a value in the text field.<br />
<br />
Click the "Output" tab and drag the <circumference> tag into the list on the right.<br />
<br />
Finally, click the "Test" tab and then click the "Test" button, and you should see the result of your called operation in the table below. You can check the XML that was sent to and received from the server by clicking the "Input Document" and "Output Document" tabs.<br />
<br />
=== Problems with Tutorial ===<br />
<br />
If you have any queries or problems running this tutorial please drop an email to [mailto:pryor@presencebpm.com Matt Pryor].</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=Incoming_Web_Service_Requests_TutorialIncoming Web Service Requests Tutorial2010-07-21T15:30:18Z<p>Admin: /* Testing your Web Service */</p>
<hr />
<div>{{Tutorials}}<br />
<br />
This document gives a step-by-step guide to exposing a Presence [[Task]] as a Web Service.<br />
<br />
=== 1: Creating the Task ===<br />
<br />
The first step is to create our Task. For the purposes of this demonstration we will create a Web Service that calculates the circumference of a circle given the radius. The Task to do this is very simple and comprises of:<br />
<br />
# Start of Task Node<br />
# Require Variable Node - ${radius}<br />
# Set Variable Node - ${circumference}<br />
# End of Task Node<br />
<br />
The variable ${radius} will be an incoming parameter and ${circumference} will be an outgoing parameter.<br />
<br />
To calculate the circumference we call the following function in our Set Variable Node (3):<br />
<br />
&eval {"2 * ${radius} * PI"}<br />
<br />
Here is a view of the Task, which can be downloaded [http://www.international-presence.com/wikidocs/samples/calc_circumference.zip here]:<br />
<br />
http://www.international-presence.com/wikidocs/images/calc_circumference_taskview.png<br />
<br />
=== 2: Creating the Web Service ===<br />
<br />
Once a Task is created exposing it as a Web Service is extremely straight forward. First launch the [[Live Tasks Queue]]. Click on the third tab (Web Service Processes) and then drag the Task into the main table. You'll then be presented with the Web Service Properties Dialog:<br />
<br />
<br />
http://www.international-presence.com/wikidocs/images/ws_tutorial_1.png<br />
<br />
* The alias represents the name of the Operation that will be called and is auto-generated based on the Task name. Feel free to change this, or leave it as it is.<br />
<br />
* It's always a good idea to add documentation to the Web Service itself and to any parameters.<br />
<br />
* Make sure "Task is active" is checked and that "One Way" is not checked.<br />
<br />
* Copy the [[WSDL]] location to your clipboard as you will need this later when calling the Web Service.<br />
<br />
* Click the "Get Task Parameters" button to map the incoming and outgoing variables to Web service parameters:<br />
<br />
http://www.international-presence.com/wikidocs/images/ws_tutorial_2.png<br />
<br />
Click okay to return to the Web Services properties screen. You can double click on the parameters to set the data type (which should be "double" for both parameters) and to add documentation.<br />
<br />
This should be all you need to do - click Okay and you should see your Task in the Web Services list.<br />
<br />
That's it!<br />
<br />
=== Testing your Web Service ===<br />
<br />
Now to test out our newly created Web Service. Create another new Task and drag a [[Web Service Call]] Node into the Task canvas. The first thing we need to do is set the WSDL location which you copied from the Web Service properties dialog. Click the "New" button, select "On the Internet" and enter the URL. This will be of the form:<br />
<br />
http://[servername]:[port]/[wsdl_location]<br />
<br />
Where [servername] is the hostname of a machine running the Presence [[HTTP Server]], [port] is the port it is listening on - this is 80 by default unless you have changed it in the http.config file, and [wsdl_location] is the WSDL document location displayed on the Web Service Properties dialog.<br />
<br />
So, here at the Presence development labs we have a server named "presenceserver" and this is the WSDL location we used for this project:<br />
<br />
http://presenceserver/Presence/Web_Service_Tutorial.wsdl (don't click this - it won't work).<br />
<br />
Note that the port is not included in the URL as 80 is the default port for HTTP requests and is therefore unnecessary.<br />
<br />
Click "Okay" and after a small delay you should see a web service tree like the following, which describes the service, port and operations available for this WSDL:<br />
<br />
http://www.international-presence.com/wikidocs/images/ws_tutorial_3.png<br />
<br />
Double click our Operation (CalculateCircumferenceWS) to specify that this is the operation we want to call, then click the "Input" tab. Select the "radius" element - which is bound to the ${radius} variable in our Web Service Task - and enter a value in the text field.<br />
<br />
Click the "Output" tab and drag the <circumference> tag into the list on the right.<br />
<br />
Finally, click the "Test" tab and then click the "Test" button, and you should see the result of your called operation in the table below. You can check the XML that was sent to and received from the server by clicking the "Input Document" and "Output Document" tabs.<br />
<br />
=== Problems with Tutorial ===<br />
<br />
If you have any queries or problems running this tutorial please drop an email to [mailto:pryor@presencebpm.com Matt Pryor].</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=Incoming_Web_Service_Requests_TutorialIncoming Web Service Requests Tutorial2010-07-21T15:10:20Z<p>Admin: </p>
<hr />
<div>{{Tutorials}}<br />
<br />
This document gives a step-by-step guide to exposing a Presence [[Task]] as a Web Service.<br />
<br />
=== 1: Creating the Task ===<br />
<br />
The first step is to create our Task. For the purposes of this demonstration we will create a Web Service that calculates the circumference of a circle given the radius. The Task to do this is very simple and comprises of:<br />
<br />
# Start of Task Node<br />
# Require Variable Node - ${radius}<br />
# Set Variable Node - ${circumference}<br />
# End of Task Node<br />
<br />
The variable ${radius} will be an incoming parameter and ${circumference} will be an outgoing parameter.<br />
<br />
To calculate the circumference we call the following function in our Set Variable Node (3):<br />
<br />
&eval {"2 * ${radius} * PI"}<br />
<br />
Here is a view of the Task, which can be downloaded [http://www.international-presence.com/wikidocs/samples/calc_circumference.zip here]:<br />
<br />
http://www.international-presence.com/wikidocs/images/calc_circumference_taskview.png<br />
<br />
=== 2: Creating the Web Service ===<br />
<br />
Once a Task is created exposing it as a Web Service is extremely straight forward. First launch the [[Live Tasks Queue]]. Click on the third tab (Web Service Processes) and then drag the Task into the main table. You'll then be presented with the Web Service Properties Dialog:<br />
<br />
<br />
http://www.international-presence.com/wikidocs/images/ws_tutorial_1.png<br />
<br />
* The alias represents the name of the Operation that will be called and is auto-generated based on the Task name. Feel free to change this, or leave it as it is.<br />
<br />
* It's always a good idea to add documentation to the Web Service itself and to any parameters.<br />
<br />
* Make sure "Task is active" is checked and that "One Way" is not checked.<br />
<br />
* Copy the [[WSDL]] location to your clipboard as you will need this later when calling the Web Service.<br />
<br />
* Click the "Get Task Parameters" button to map the incoming and outgoing variables to Web service parameters:<br />
<br />
http://www.international-presence.com/wikidocs/images/ws_tutorial_2.png<br />
<br />
Click okay to return to the Web Services properties screen. You can double click on the parameters to set the data type (which should be "double" for both parameters) and to add documentation.<br />
<br />
This should be all you need to do - click Okay and you should see your Task in the Web Services list.<br />
<br />
That's it!<br />
<br />
=== Testing your Web Service ===<br />
<br />
Now to test out our newly created Web Service. Create another new Task and drag a [[Web Service Call]] Node into the Task canvas. The first thing we need to do is set the WSDL location which you copied from the Web Service properties dialog. Click the "New" button, select "On the Internet" and enter the URL. This will be of the form:<br />
<br />
http://[servername]:[port]/[wsdl_location]<br />
<br />
Where [servername] is the hostname of a machine running the Presence [[HTTP Server]], [port] is the port it is listening on - this is 80 by default unless you have changed it in the http.config file, and [wsdl_location] is the WSDL document location displayed on the Web Service Properties dialog.<br />
<br />
So, here at the Presence development labs we have a server named "presenceserver" and this is the WSDL location we used for this project:<br />
<br />
http://presenceserver/Presence/Web_Service_Tutorial.wsdl (don't click this - it won't work).<br />
<br />
Note that the port is not included in the URL as 80 is the default port for HTTP requests and is therefore unnecessary.</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=Incoming_Web_Service_Requests_TutorialIncoming Web Service Requests Tutorial2010-07-21T14:19:17Z<p>Admin: </p>
<hr />
<div>{{Tutorials}}<br />
<br />
This document gives a step-by-step guide to exposing a Presence [[Task]] as a Web Service.<br />
<br />
=== 1: Creating the Task ===<br />
<br />
The first step is to create our Task. For the purposes of this demonstration we will create a Web Service that calculates the circumference of a circle given the radius. The Task to do this is very simple and comprises of:<br />
<br />
# Start of Task Node<br />
# Require Variable Node - ${radius}<br />
# Set Variable Node - ${circumference}<br />
# End of Task Node<br />
<br />
The variable ${radius} will be an incoming parameter and ${circumference} will be an outgoing parameter.<br />
<br />
To calculate the circumference we call the following function in our Set Variable Node (3):<br />
<br />
&eval {"2 * ${radius} * PI"}<br />
<br />
Here is a view of the Task, which can be downloaded [http://www.international-presence.com/wikidocs/samples/calc_circumference.zip here]:<br />
<br />
http://www.international-presence.com/wikidocs/images/calc_circumference_taskview.png<br />
<br />
=== 2: Creating the Web Service ===<br />
<br />
To expose our Task as a Web Service, first launch the [[Live Tasks Queue]]</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=Incoming_Web_Service_Requests_TutorialIncoming Web Service Requests Tutorial2010-07-21T12:12:45Z<p>Admin: </p>
<hr />
<div>{{Tutorials}}<br />
<br />
This document gives a step-by-step guide to exposing a Presence [[Task]] as a [[Web Service]].</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=Web_Application_Creation_TutorialWeb Application Creation Tutorial2010-07-21T11:07:00Z<p>Admin: </p>
<hr />
<div>{{Tutorials}}<br />
<br />
<br />
This document describes the processes needed to create and deploy a Presence Web Application.<br />
<br />
=== Prerequisites ===<br />
<br />
For this tutorial you will need to install and run a Servlet Engine such as Tomcat:<br />
<br />
* [http://tomcat.apache.org/download-60.cgi Tomcat Download Link]<br />
<br />
A full list of J2EE compliant Servlet Engines is available over at [http://www.servlets.com/engines/ servlets.com]. Each vendor may provide its own mechanism for deploying web application archives (WARs) so you should check the documentation for whichever Servlet engine you're using.<br />
<br />
=== Part 1: Task Creation ===<br />
<br />
For this example we will create a simple application that asks the user's name and then returns some information about the name. For this we will need two Tasks which:<br />
<br />
* Display a page requesting the user's name<br />
* Display a page showing information about the user's name<br />
<br />
In a real world example both of these pages could be generated by a single Task, but we want to demonstrate multiple Tasks being used by a Web Application. The Tasks can be downloaded from [http://www.international-presence.com/wikidocs/samples/name_analysis.zip here]. Go ahead and extract the zip file then [[Import Tasks|import]] the XML file into Presence.<br />
<br />
Once imported, you can test the functionality by running the Presence [[HTTP Server]] then directing your web browser to the following URL:<br />
<br />
http://[server name]:[http port]/task/requestName<br />
<br />
Try it out. You won't be very impressed, but if you can submit the form and receive a suitable response then it is working which is the main thing.<br />
<br />
=== Part 2: Web Application Creation ===<br />
<br />
The next step is to create our WAR file which we will later deploy to our Servlet Engine.<br />
<br />
In the Presence [[Administration Client]] select Tools > Create Web Application from the top menu. You will then be presented with the first screen of the Web Application Wizard. Complete this information using the example below as a guide:<br />
<br />
http://www.international-presence.com/wikidocs/images/webapp_1.png<br />
<br />
Click "Next >" to specify which Tasks you want to include in your Web Application. Drag the Category containing our two Tasks into the right-hand Table. Aliases will be autogenerated, but you can change them by right-clicking on a Task and selecting "Change Alias" from the pop-up menu:<br />
<br />
http://www.international-presence.com/wikidocs/images/webapp_2.png<br />
<br />
Click "Next >" to view the Resources screen. This project doesn't require any external resources, but if you need to include things like images and style-sheets then this is the place to do it. Click Next again to proceed to the Libraries screen. Again, we shouldn't need any external libraries for this project so you can skip this screen as well and proceed to the "Create WAR File" screen:<br />
<br />
http://www.international-presence.com/wikidocs/images/webapp_3.png<br />
<br />
We will call our WAR file "nameanalysis.war" and save it to the root of the C: drive. If you want to call it something else, or save it elsewhere, feel free to do so - just remember where you put it as you'll need it later.<br />
<br />
=== Part 3: Deployment ===<br />
<br />
The final part of the exercise is to deploy our Web App to our Servlet Engine. If you are using Tomcat this will be very straightforward: Just drop the newly created WAR file into the "webapps" directory within "tomcat". Assuming that Tomcat is running it will automatically extract the archive file and the web application should be immediately available. As you can see in the image below, a new directory matching the name of the WAR file has been created, which contains the extracted contents of the WAR file:<br />
<br />
http://www.international-presence.com/wikidocs/images/deploy_tomcat.png<br />
<br />
Once this is done, you can browse to your application using the following URL:<br />
<br />
http://[server name]:[tomcat port]/nameanalysis/task/requestName<br />
<br />
If all has gone well you should now see the output from the Name Request Task and the form should work as it did when running through the Presence HTTP Server. The difference is that Presence is no longer involved in running the Tasks - you can shut down the Presence Server and database server and the Tasks will still run quite happily.<br />
<br />
<br />
{{Tutorials}}</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=Web_Application_Creation_TutorialWeb Application Creation Tutorial2010-07-21T11:06:04Z<p>Admin: </p>
<hr />
<div>{{Tutorials}}<br />
<br />
<br />
This document describes the processes needed to create and deploy a Presence Web Application.<br />
<br />
=== Prerequisites ===<br />
<br />
For this tutorial you will need to install and run a Servlet Engine such as Tomcat:<br />
<br />
* [http://tomcat.apache.org/download-60.cgi Tomcat Download Link]<br />
<br />
A full list of J2EE compliant Servlet Engines is available over at [http://www.servlets.com/engines/ servlets.com]. Each vendor may provide its own mechanism for deploying web application archives (WARs) so you should check the documentation for whichever Servlet engine you're using.<br />
<br />
=== Part 1: Task Creation ===<br />
<br />
For this example we will create a simple application that asks the user's name and then returns some information about the name. For this we will need two Tasks which:<br />
<br />
* Display a page requesting the user's name<br />
* Display a page showing information about the user's name<br />
<br />
In a real world example both of these pages could be generated by a single Task, but we want to demonstrate multiple Tasks being used by a Web Application. The Tasks can be downloaded from [http://www.international-presence.com/wikidocs/samples/name_analysis.zip here]. Go ahead and extract the zip file then [[Import Tasks|import]] the XML file into Presence.<br />
<br />
Once imported, you can test the functionality by running the Presence [[HTTP Server]] then directing your web browser to the following URL:<br />
<br />
http://[server name]:[http port]/task/requestName<br />
<br />
Try it out. You won't be very impressed, but if you can submit the form and receive a suitable response then it is working which is the main thing.<br />
<br />
=== Part 2: Web Application Creation ===<br />
<br />
The next step is to create our WAR file which we will later deploy to our Servlet Engine.<br />
<br />
In the Presence [[Administration Client]] select Tools > Create Web Application from the top menu. You will then be presented with the first screen of the Web Application Wizard. Complete this information using the example below as a guide:<br />
<br />
http://www.international-presence.com/wikidocs/images/webapp_1.png<br />
<br />
Click "Next >" to specify which Tasks you want to include in your Web Application. Drag the Category containing our two Tasks into the right-hand Table. Aliases will be autogenerated, but you can change them by right-clicking on a Task and selecting "Change Alias" from the pop-up menu:<br />
<br />
http://www.international-presence.com/wikidocs/images/webapp_2.png<br />
<br />
Click "Next >" to view the Resources screen. This project doesn't require any external resources, but if you need to include things like images and style-sheets then this is the place to do it. Click Next again to proceed to the Libraries screen. Again, we shouldn't need any external libraries for this project so you can skip this screen as well and proceed to the "Create WAR File" screen:<br />
<br />
http://www.international-presence.com/wikidocs/images/webapp_3.png<br />
<br />
We will call our WAR file "nameanalysis.war" and save it to the root of the C: drive. If you want to call it something else, or save it elsewhere, feel free to do so - just remember where you put it as you'll need it later.<br />
<br />
=== Part 3: Deployment ===<br />
<br />
The final part of the exercise is to deploy our Web App to our Servlet Engine. If you are using Tomcat this will be very straightforward: Just drop the newly created WAR file into the "webapps" directory within "tomcat". Assuming that Tomcat is running it will automatically extract the archive file and the web application should be immediately available. As you can see in the image below, a new directory matching the name of the WAR file has been created, which contains the extracted contents of the WAR file:<br />
<br />
http://www.international-presence.com/wikidocs/images/deploy_tomcat.png<br />
<br />
Once this is done, you can browse to your application using the following URL:<br />
<br />
http://[server name]:[tomcat port]/nameanalysis/task/requestName<br />
<br />
If all has gone well you should now see the output from the Name Request Task and the form should work as it did when running through the Presence HTTP Server. The difference is that Presence is no longer involved in running the Tasks - you can shut down the Presence Server and database server and the Tasks will still run quite happily.</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=Template:TutorialsTemplate:Tutorials2010-07-21T11:01:57Z<p>Admin: </p>
<hr />
<div>{| style="text-align:center; width:100%; background:#eeeeee; border:1px solid black"<br />
|-<br />
| [[Tutorial Pages]] > {{PAGENAME}}<br />
|}</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=Template:TutorialsTemplate:Tutorials2010-07-21T11:01:43Z<p>Admin: </p>
<hr />
<div>{| style="text-align:center; width:100%; background:#eeeeee; border:1px solid black"<br />
|-<br />
| [[Tutorials]] > {{PAGENAME}}<br />
|}</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=Incoming_Web_Service_Requests_TutorialIncoming Web Service Requests Tutorial2010-07-21T10:58:58Z<p>Admin: </p>
<hr />
<div>{{Tutorials}}</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=Tutorial_PagesTutorial Pages2010-07-21T10:58:38Z<p>Admin: </p>
<hr />
<div>* [[Web Application Creation Tutorial]]<br />
* [[Incoming Web Service Requests Tutorial]]</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=Tutorial_PagesTutorial Pages2010-07-21T10:58:09Z<p>Admin: </p>
<hr />
<div>* [[Web Application Creation Tutorial]]</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=Tutorial_PagesTutorial Pages2010-07-21T10:57:48Z<p>Admin: </p>
<hr />
<div>* [[Web Application Tutorial]]</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=SOAPSOAP2010-07-21T10:57:09Z<p>Admin: /* Incoming SOAP Requests to Presence */</p>
<hr />
<div>SOAP stands for Simple Object Access Protocol and is an XML-based standard for requesting and sending information in the form of Web Services, usually over HTTP. A complete specification of the protocol is available at [http://www.w3.org/TR/soap12-part1/#intro w3.org], and a less technical description can be found at [http://en.wikipedia.org/wiki/SOAP Wikipedia].<br />
<br />
=== Presence support for SOAP ===<br />
<br />
Presence supports incoming and outgoing SOAP requests which means it can be integrated as part of any product that supports a Service Orientated Architecture.<br />
<br />
==== Incoming SOAP Requests to Presence ====<br />
<br />
Tasks can be made available as Web Services by adding them to the Web Service [[Live Tasks Queue]]. In the context of a Web Service a Task acts as an operation and can accept incoming parameters.<br />
<br />
Please see the [[Incoming Web Service Requests Tutorial]] for a step-by-step guide to using this feature.<br />
<br />
==== Outgoing SOAP Requests from Presence ====<br />
<br />
Presence can also call Web Services on other computers via [[Web Services Nodes]].</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=Presence_User_ManagementPresence User Management2010-07-21T10:24:30Z<p>Admin: </p>
<hr />
<div>{{AdminClient}}<br />
<br />
<br />
{{UnderConstruction|Explanation of roles required.}}<br />
<br />
<br />
http://www.international-presence.com/wikidocs/images/user_management.png<br />
<br />
The user management console allows Presence administrators to create, modify, delete and set permissions for other administration accounts. These actions are performed by right-clicking in the user list and using the pop-up menu.<br />
<br />
=== Security Levels ===<br />
<br />
Each user has a security level assigned, which can be one of:<br />
<br />
* Administrator<br />
* Manager<br />
* General User<br />
* Restricted<br />
<br />
<br />
{{AdminClientNavigation}}</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=IdenticalityIdenticality2010-07-21T10:20:13Z<p>Admin: </p>
<hr />
<div>The state of being as similar as something else to the point of seeming equal.</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=Drop_Duplicate_RowsDrop Duplicate Rows2010-07-21T10:19:25Z<p>Admin: /* Selecting columns to consider */</p>
<hr />
<div>The Drop Duplicate Rows Node performs the equivalent to a "Select DISTINCT" operation on the current [[Data Table]]. Rows that are considered to be duplicates of other rows are removed. A duplicate row is one that contains identical values as another row.<br />
<br />
Please see the example below, of a Data Table before and after executing a Drop Duplicate Rows Node (rows which will be deleted are marked with a red cross).<br />
<br />
http://www.international-presence.com/wikidocs/images/remove_duplicates_illustration.png<br />
<br />
<br />
=== Selecting columns to consider ===<br />
<br />
The following dialog is displayed when dragging this Node into your Task:<br />
<br />
http://www.international-presence.com/wikidocs/images/drop_duplicates_editor.png<br />
<br />
Select which columns you wish to be considered when comparing rows. Any columns which are left unchecked will be ignored when making the comparison - meaning that even though those values differ, provided the checked columns are identical the row will be dropped.<br />
<br />
In the example screenshot above only the FORENAME, SURNAME, COMPANY and ORDER_NUMBER will be considered for [[identicality]]. Rows containing equal values for these but differing values for DELIVERY_DATE will be dropped (the first row will be retained).<br />
<br />
{{DataTableNodes}}</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=Drop_Duplicate_RowsDrop Duplicate Rows2010-07-21T10:12:17Z<p>Admin: </p>
<hr />
<div>The Drop Duplicate Rows Node performs the equivalent to a "Select DISTINCT" operation on the current [[Data Table]]. Rows that are considered to be duplicates of other rows are removed. A duplicate row is one that contains identical values as another row.<br />
<br />
Please see the example below, of a Data Table before and after executing a Drop Duplicate Rows Node (rows which will be deleted are marked with a red cross).<br />
<br />
http://www.international-presence.com/wikidocs/images/remove_duplicates_illustration.png<br />
<br />
<br />
=== Selecting columns to consider ===<br />
<br />
The following dialog is displayed when dragging this Node into your Task:<br />
<br />
http://www.international-presence.com/wikidocs/images/drop_duplicates_editor.png<br />
<br />
Select which columns you wish to be considered when comparing rows. Any columns which are left unchecked will be ignored when making the comparison - meaning that even though those values differ, provided the checked columns are identical the row will be dropped.<br />
<br />
{{DataTableNodes}}</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=Calculate_Column_AggregateCalculate Column Aggregate2010-07-20T12:43:54Z<p>Admin: /* Standard Deviation */</p>
<hr />
<div>== Calculate Column Aggregate ==<br />
<br />
This document has been revised for Presence version 3.6.<br />
<br />
The Column Aggregate Node performs the following statistical functions on a column of data in the [[Data Table]]:<br />
<br />
*Mean<br />
*Sum<br />
*Minimum<br />
*Maximum<br />
*Count<br />
*Median <sup>1</sup><br />
*Standard Deviation <sup>1</sup><br />
<br />
<sup>1</sup> Features available in Presence 3.6 and later.<br />
<br />
To include this Node in your Task drop a "Calculate Column Aggregate" Task Element into your Task design from the Data Access Task Elements list, after which you will be presented with the following dialog box:<br />
<br />
<br />
http://www.international-presence.com/wikidocs/images/column_aggregate_dialog.png<br />
<br />
<br />
There are four configuration options to set for this Node:<br />
<br />
* '''Data Column''' - Choose the Data Column that you wish to perform the calculation on.<br />
* '''Aggregate Type''' - Choose which type of aggregate function you wish to perform<br />
* '''Variable''' - The name variable which should store the result<br />
* '''Variable Scope''' - see [[Variables]] for a description of variable scope.<br />
* '''Rules''' - set the [[Rules]] for runtime evaluation.<br />
<br />
=== Average ===<br />
<br />
Statistical mean. This is calculated by adding together all values in the column and dividing the result by the number of records.<br />
<br />
Example: The average of 10,15,12,11,19,7,18 is 13.142857<br />
<br />
=== Median ===<br />
<br />
This is the middle number if all numbers are arranged in ascending order (assuming an odd number of values). If there is an even number of values the mean is taken of the two middle values.<br />
<br />
Example: The median of 10,15,12,11,19,7,18 is 11<br />
<br />
=== Standard Deviation ===<br />
<br />
Calculates the square root of the variance from the mean. This is achieved as follows:<br />
<br />
# Calculate the mean<br />
# For each value calculate the difference between that value and the mean<br />
# Square that number<br />
# Add them all together<br />
# Divide by total number of values<br />
# Take square root<br />
<br />
Example: The standard deviation of 2,4,6,8,10 is 2.8243<br />
<br />
Which equals (where m = mean, or 6.0):<br />
<br />
: (2-m)<sup>2</sup> = -4<sup>2</sup> = 16<br />
<br />
+ (4-m)<sup>2</sup> = -2<sup>2</sup> = 4<br />
<br />
+ (6-m><sup>2</sup> = 0<sup>2</sup> = 0<br />
<br />
+ (8-m)<sup>2</sup> = 2<sup>2</sup> = 4<br />
<br />
+ (10-m)<sup>2</sup> = 4<sup>2</sup> = 16<br />
<br />
= 40<br />
<br />
40 / 5 = 8<br />
<br />
Square root of 8 = 2.8243<br />
<br />
=== Sum ===<br />
<br />
This is the total of all the values in the data range.<br />
<br />
Example: The sum of 10,15,12,11,19,7,18 is 92.<br />
<br />
=== Minimum ===<br />
<br />
This is the lowest value in the data range.<br />
<br />
Example: The minimum of 10,15,12,11,19,7,18 is 7.<br />
<br />
=== Maximum ===<br />
<br />
This is the highest value in the data range.<br />
<br />
Example: The maximum of 10,15,12,11,19,7,18 is 19.<br />
<br />
=== Count ===<br />
<br />
This is a count of all records.<br />
<br />
=== Non-Numeric values ===<br />
<br />
All non-numeric values will be ignored when calculating these results.<br />
<br />
<br />
{{DataTableNodes}}</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=Calculate_Column_AggregateCalculate Column Aggregate2010-07-20T12:42:53Z<p>Admin: </p>
<hr />
<div>== Calculate Column Aggregate ==<br />
<br />
This document has been revised for Presence version 3.6.<br />
<br />
The Column Aggregate Node performs the following statistical functions on a column of data in the [[Data Table]]:<br />
<br />
*Mean<br />
*Sum<br />
*Minimum<br />
*Maximum<br />
*Count<br />
*Median <sup>1</sup><br />
*Standard Deviation <sup>1</sup><br />
<br />
<sup>1</sup> Features available in Presence 3.6 and later.<br />
<br />
To include this Node in your Task drop a "Calculate Column Aggregate" Task Element into your Task design from the Data Access Task Elements list, after which you will be presented with the following dialog box:<br />
<br />
<br />
http://www.international-presence.com/wikidocs/images/column_aggregate_dialog.png<br />
<br />
<br />
There are four configuration options to set for this Node:<br />
<br />
* '''Data Column''' - Choose the Data Column that you wish to perform the calculation on.<br />
* '''Aggregate Type''' - Choose which type of aggregate function you wish to perform<br />
* '''Variable''' - The name variable which should store the result<br />
* '''Variable Scope''' - see [[Variables]] for a description of variable scope.<br />
* '''Rules''' - set the [[Rules]] for runtime evaluation.<br />
<br />
=== Average ===<br />
<br />
Statistical mean. This is calculated by adding together all values in the column and dividing the result by the number of records.<br />
<br />
Example: The average of 10,15,12,11,19,7,18 is 13.142857<br />
<br />
=== Median ===<br />
<br />
This is the middle number if all numbers are arranged in ascending order (assuming an odd number of values). If there is an even number of values the mean is taken of the two middle values.<br />
<br />
Example: The median of 10,15,12,11,19,7,18 is 11<br />
<br />
=== Standard Deviation ===<br />
<br />
Calculates the square root of the variance from the mean. This is achieved as follows:<br />
<br />
# Calculate the mean<br />
# For each value calculate the difference between that value and the mean<br />
# Square that number<br />
# Add them all together<br />
# Divide by total number of values<br />
# Take square root<br />
<br />
Example: The standard deviation of 2,4,6,8,10 is 2.8243<br />
<br />
Which equals (where m = mean, or 6.0):<br />
<br />
: (2-m)<sup>2</sup> = -4<sup>2</sup> = 16<br />
+ (4-m)<sup>2</sup> = -2<sup>2</sup> = 4<br />
+ (6-m><sup>2</sup> = 0<sup>2</sup> = 0<br />
+ (8-m)<sup>2</sup> = 2<sup>2</sup> = 4<br />
+ (10-m)<sup>2</sup> = 4<sup>2</sup> = 16<br />
<br />
= 40<br />
<br />
40 / 5 = 8<br />
<br />
Square root of 8 = 2.8243<br />
<br />
=== Sum ===<br />
<br />
This is the total of all the values in the data range.<br />
<br />
Example: The sum of 10,15,12,11,19,7,18 is 92.<br />
<br />
=== Minimum ===<br />
<br />
This is the lowest value in the data range.<br />
<br />
Example: The minimum of 10,15,12,11,19,7,18 is 7.<br />
<br />
=== Maximum ===<br />
<br />
This is the highest value in the data range.<br />
<br />
Example: The maximum of 10,15,12,11,19,7,18 is 19.<br />
<br />
=== Count ===<br />
<br />
This is a count of all records.<br />
<br />
=== Non-Numeric values ===<br />
<br />
All non-numeric values will be ignored when calculating these results.<br />
<br />
<br />
{{DataTableNodes}}</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=Calculate_Column_AggregateCalculate Column Aggregate2010-07-15T10:52:04Z<p>Admin: </p>
<hr />
<div>== Calculate Column Aggregate ==<br />
<br />
This document has been revised for Presence version 3.6.<br />
<br />
The Column Aggregate Node performs the following statistical functions on a column of data in the [[Data Table]]:<br />
<br />
*Average<br />
*Sum<br />
*Minimum<br />
*Maximum<br />
*Count<br />
<br />
To include this Node in your Task drop a "Calculate Column Aggregate" Task Element into your Task design from the Data Access Task Elements list, after which you will be presented with the following dialog box:<br />
<br />
<br />
http://www.international-presence.com/wikidocs/images/column_aggregate_dialog.png<br />
<br />
<br />
There are four configuration options to set for this Node:<br />
<br />
* '''Data Column''' - Choose the Data Column that you wish to perform the calculation on.<br />
* '''Aggregate Type''' - Choose which type of aggregate function you wish to perform<br />
* '''Variable''' - The name variable which should store the result<br />
* '''Variable Scope''' - see [[Variables]] for a description of variable scope.<br />
* '''Rules''' - set the [[Rules]] for runtime evaluation.<br />
<br />
=== Average ===<br />
<br />
Statistical mean. This is calculated by adding together all values in the column and dividing the result by the number of records.<br />
<br />
Example: The average of 10,15,12,11,19,7,18 is 13.142857<br />
<br />
=== Sum ===<br />
<br />
This is the total of all the values in the data range.<br />
<br />
Example: The sum of 10,15,12,11,19,7,18 is 92.<br />
<br />
=== Minimum ===<br />
<br />
This is the lowest value in the data range.<br />
<br />
Example: The minimum of 10,15,12,11,19,7,18 is 7.<br />
<br />
=== Maximum ===<br />
<br />
This is the highest value in the data range.<br />
<br />
Example: The maximum of 10,15,12,11,19,7,18 is 19.<br />
<br />
=== Count ===<br />
<br />
This is a count of all records.<br />
<br />
=== Non-Numeric values ===<br />
<br />
All non-numeric values will be ignored when calculating these results.<br />
<br />
<br />
{{DataTableNodes}}</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=RulesRules2010-07-15T10:49:47Z<p>Admin: /* Rules on Task Elements */</p>
<hr />
<div>== Rules ==<br />
<br />
In Presence, Rules allow you to specify the conditions which must be met in order for the item in question to execute. The standard Rules dialog box looks like this:<br />
<br />
<br />
http://www.international-presence.com/wikidocs/images/rules_dialog.png<br />
<br />
<br />
Rules are comprised of Conditions (e.g. A = B) and Condition Groups (e.g. A = B AND C = D).<br />
<br />
Condition Groups can be nested. This means that you can combine groups of conditions to provide sophisticated boolean logic. To create a new nested group use the "+ And Group" or "+ Or Group" buttons. To change a condition group from AND to OR, or vice versa, use the "Switch Group" button. To remove a group use the "Remove" button.<br />
<br />
To add a new condition, drag and drop an item from the left hand pane into the main (conditions) panel. This will bring up the conditions dialog (see below). The left hand pane lists all of the items available for comparison. If the item you wish to compare is not listed, drag another item and change it in the condition dialog:<br />
<br />
<br />
http://www.international-presence.com/wikidocs/images/condition_dialog.png<br />
<br />
<br />
=== Condition Dialog Options ===<br />
<br />
Two values are (usually) displayed which will be compared against each other at runtime. You can edit these values as you wish. Values can be compared in the following ways:<br />
<br />
* Equal to - returns true if both values are equal after runtime evaluation.<br />
* Greater than - returns true if the result of the first (top) value is numerically greater than the result of the second (bottom) value.<br />
* Greater than or equal to - As above, but will also return true if the values are equal.<br />
* Less than - returns true if the result of the first (top) value is numerically less than the result of the second (bottom) value.<br />
* Less than or equal to - As above, but will also return true if the values are equal. <br />
* Between - Returns true if the first value is numerically greater than the second value and less than the third.<br />
* Between (inclusive) - As above but will also return true if the values are equal.<br />
* Like - This replicates the LIKE clause in an SQL statement. The "%" character represents any characters - for example Gr% will match [[User:Graham|Graham]], Grim or Gruel (etc).<br />
* Matches Pattern - Compares the values using [[Regular expressions]] syntax.<br />
* Null (Unknown) - Only the first value is considered, and it will return true if the value is NULL, blank or unknown.<br />
<br />
To reverse the logic (e.g. return TRUE if the first value is NOT equal to the second value) select "Is not.." instead of "Is..".<br />
<br />
=== Notes on Nested Conditions ===<br />
<br />
If only one condition is present the entire rule will either be TRUE or FALSE depending on the result of that condition. If two conditions are present the Rule will return TRUE if both conditions return TRUE (if the top group is an AND group) or if either condition returns TRUE (if the top group is an OR group).<br />
<br />
As mentioned above conditions can be nested in AND / OR groups. Consider the following:<br />
<br />
<br />
http://www.international-presence.com/wikidocs/images/nested_conditions_explanation.png<br />
<br />
Logic dictates that this Rule can only evaluate to true under one of the following circumstances:<br />
<br />
* NAME is 'Suzie', AGE is 63, EYECOLOR is 'Blue'<br />
* NAME is 'Suzie', AGE is 63, EYECOLOR is 'Green'<br />
<br />
Anything else will cause the Rule to evaluate to false, and the action that it is associated with will not take place.<br />
<br />
=== Rules on Task Elements ===<br />
<br />
Certain Task Elements allow you to specify a Rule. If the Rule does not evaluate for a particular row of data the Task Element will not affect that row. These include (at the time of writing):<br />
<br />
* [[Append Data Column]] - rows that do not match the Rule will be set to NULL<br />
* [[Drop Row(s)]] - rows that do not match the Rule will be retained<br />
* [[Variable Setter]] - the variable will only be created if the Rules evaluate to true.<br />
* [[Merge Results]] - incoming rows that do not match the Rule will not be included in the merged [[Data Table]]<br />
* [[Calculate Column Aggregate]] - Only records matching the Rule will be included in the aggregate function.<br />
<br />
To apply Rules to these Task Elements, right-click on the node and select "Rules > Set Rules". An icon will be overlayed on the Node showing an "R" symbol to identify the fact that Rules have been set. To clear Rules right click on the node and select "Rules > Clear Rules".<br />
<br />
Rules are also used in the XML Query Node, XML Writer Node, the Create Graph Node, and elsewhere.</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=DebugDebug2010-07-14T16:51:59Z<p>Admin: /* Task View */</p>
<hr />
<div>Before putting a Task on the [[Live Tasks Queue]] or enabling it to be called [[On Demand]], it is typically a good idea to test it out and make sure it's doing what you expect it to.<br />
<br />
This is where the Presence Debug Tool comes in handy. The Debug Tool allows you to step through the individual [[Task Elements]] one by one, examine the information that is passed between them, and view any logging information.<br />
<br />
=== Launching the Debug Tool ===<br />
<br />
To launch the Debug Tool, you first need to have the Task open and the appropriate tab selected. There are three ways to begin debugging the Task:<br />
<br />
- Click on the Debug Icon http://www.international-presence.com/wikidocs/images/debug_1.gif<br />
<br />
- Right click on the Task Design View (not on a [[Task Element]]) and select Debug from the pop-up menu<br />
<br />
- Click on the "Task" menu at the top of the Administration Client, and select "Debug Current Task".<br />
<br />
There is also a "Debug on..." option for the second and third methods. This allows you to select a server to debug the Task on if you have a multi-server environment.<br />
<br />
=== Using the Debug Tool ===<br />
<br />
Here is a screen-shot of the Debug Tool:<br />
<br />
http://www.international-presence.com/wikidocs/images/debug_2.gif<br />
<br />
There are four main components to this window.<br />
<br />
<ol><br />
<li><b>Stepping Controls</b><br />
These are at the top of the left hand panel. The controls consist of a Pause, Step, Play, and Fast Play button.</li><br />
<li><b>Context Inspector</b><br />
This is below the Stepping Controls and lets you inspect the current [[Presence Context]]</li><br />
<li><b>Task Log Viewer</b><br />
This allows you to view any log output generated by the Task in real time.</li><br />
<li><b>Task View</b><br />
This is a smaller version of the [[Task]], and the [[Task Element]] that is about to run will be highlighted.</li><br />
</ol><br />
<br />
=== Stepping Controls ===<br />
<br />
* <b>Pause:</b> This pauses the currently running Task if you have clicked on "Play" or "Fast Play".<br />
<br />
* <b>Step:</b> This executes the currently active [[Task Element]], highlights the next in the sequence, and waits for the user to press Step again.<br />
<br />
* <b>Play</b> This executes the entire Task, highlighting the currently executing [[Task Element]] as it proceeds through the sequence.<br />
<br />
* <b>Fast Play</b> This runs the remainder of the Task without any visual feedback as to where in the Task it is currently running.<br />
<br />
=== Context Inspector ===<br />
<br />
This allows you to inspect items in the [[Presence Context]] by clicking on the item and viewing the value in the pane to the right. The [[Data Table]] is presented as a tree, with each column name as a branch and each row as a leaf within the branch.<br />
<br />
[[Variables]] are displayed under the Data Table and are split into Local and [[Task Variables]]. Global Variables are not displayed here.<br />
<br />
==== Internal Variables ====<br />
<br />
These are Variables generated by Presence.<br />
<br />
* '''${presence.servername}''' - The host name of the server that the Task is running on.<br />
* '''${datatable.columncount}''' - The number of columns in the current Data Table<br />
* '''${datatable.rowcount}''' - The number of rows in the current Data Table<br />
<br />
=== Task Log Viewer ===<br />
<br />
This displays the most recent log entries for the Task and should automatically update as the Task progresses. The buttons above the log pane perform the following functions:<br />
<br />
* '''Edit''' - edits the current Task Element<br />
* '''Delete''' - removes the selected log entries from the log file<br />
* '''Refresh''' - refreshes the logs from the log file.<br />
<br />
=== Task View ===<br />
<br />
This is a scaled down overview of the Task. The current Task Element is highlighted with a blue border. As you step into [[Nested Tasks]] the view will be updated with the schematic of the Nested Task.<br />
<br />
=== Breakpoints ===<br />
<br />
Presence allows you to add Breakpoints to your Tasks. To do so, in the Task Design View, right click on a [[Task Element]] and select "Add Breakpoint" from the pop-up menu.<br />
<br />
If you then click on the "Play" or "Fast Play" button, the Task will continue to run until it hits a Breakpoint, at which point it will stop and wait for user interaction.<br />
<br />
This feature is especially useful if you want to debug a specific part of Task but do not want to have to step through all the preceding [[Task Elements]].</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=DebugDebug2010-07-14T16:50:55Z<p>Admin: /* Task Log Viewer */</p>
<hr />
<div>Before putting a Task on the [[Live Tasks Queue]] or enabling it to be called [[On Demand]], it is typically a good idea to test it out and make sure it's doing what you expect it to.<br />
<br />
This is where the Presence Debug Tool comes in handy. The Debug Tool allows you to step through the individual [[Task Elements]] one by one, examine the information that is passed between them, and view any logging information.<br />
<br />
=== Launching the Debug Tool ===<br />
<br />
To launch the Debug Tool, you first need to have the Task open and the appropriate tab selected. There are three ways to begin debugging the Task:<br />
<br />
- Click on the Debug Icon http://www.international-presence.com/wikidocs/images/debug_1.gif<br />
<br />
- Right click on the Task Design View (not on a [[Task Element]]) and select Debug from the pop-up menu<br />
<br />
- Click on the "Task" menu at the top of the Administration Client, and select "Debug Current Task".<br />
<br />
There is also a "Debug on..." option for the second and third methods. This allows you to select a server to debug the Task on if you have a multi-server environment.<br />
<br />
=== Using the Debug Tool ===<br />
<br />
Here is a screen-shot of the Debug Tool:<br />
<br />
http://www.international-presence.com/wikidocs/images/debug_2.gif<br />
<br />
There are four main components to this window.<br />
<br />
<ol><br />
<li><b>Stepping Controls</b><br />
These are at the top of the left hand panel. The controls consist of a Pause, Step, Play, and Fast Play button.</li><br />
<li><b>Context Inspector</b><br />
This is below the Stepping Controls and lets you inspect the current [[Presence Context]]</li><br />
<li><b>Task Log Viewer</b><br />
This allows you to view any log output generated by the Task in real time.</li><br />
<li><b>Task View</b><br />
This is a smaller version of the [[Task]], and the [[Task Element]] that is about to run will be highlighted.</li><br />
</ol><br />
<br />
=== Stepping Controls ===<br />
<br />
* <b>Pause:</b> This pauses the currently running Task if you have clicked on "Play" or "Fast Play".<br />
<br />
* <b>Step:</b> This executes the currently active [[Task Element]], highlights the next in the sequence, and waits for the user to press Step again.<br />
<br />
* <b>Play</b> This executes the entire Task, highlighting the currently executing [[Task Element]] as it proceeds through the sequence.<br />
<br />
* <b>Fast Play</b> This runs the remainder of the Task without any visual feedback as to where in the Task it is currently running.<br />
<br />
=== Context Inspector ===<br />
<br />
This allows you to inspect items in the [[Presence Context]] by clicking on the item and viewing the value in the pane to the right. The [[Data Table]] is presented as a tree, with each column name as a branch and each row as a leaf within the branch.<br />
<br />
[[Variables]] are displayed under the Data Table and are split into Local and [[Task Variables]]. Global Variables are not displayed here.<br />
<br />
==== Internal Variables ====<br />
<br />
These are Variables generated by Presence.<br />
<br />
* '''${presence.servername}''' - The host name of the server that the Task is running on.<br />
* '''${datatable.columncount}''' - The number of columns in the current Data Table<br />
* '''${datatable.rowcount}''' - The number of rows in the current Data Table<br />
<br />
=== Task Log Viewer ===<br />
<br />
This displays the most recent log entries for the Task and should automatically update as the Task progresses. The buttons above the log pane perform the following functions:<br />
<br />
* '''Edit''' - edits the current Task Element<br />
* '''Delete''' - removes the selected log entries from the log file<br />
* '''Refresh''' - refreshes the logs from the log file.<br />
<br />
=== Task View ===<br />
<br />
=== Breakpoints ===<br />
<br />
Presence allows you to add Breakpoints to your Tasks. To do so, in the Task Design View, right click on a [[Task Element]] and select "Add Breakpoint" from the pop-up menu.<br />
<br />
If you then click on the "Play" or "Fast Play" button, the Task will continue to run until it hits a Breakpoint, at which point it will stop and wait for user interaction.<br />
<br />
This feature is especially useful if you want to debug a specific part of Task but do not want to have to step through all the preceding [[Task Elements]].</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=DebugDebug2010-07-14T16:49:24Z<p>Admin: /* Context Inspector */</p>
<hr />
<div>Before putting a Task on the [[Live Tasks Queue]] or enabling it to be called [[On Demand]], it is typically a good idea to test it out and make sure it's doing what you expect it to.<br />
<br />
This is where the Presence Debug Tool comes in handy. The Debug Tool allows you to step through the individual [[Task Elements]] one by one, examine the information that is passed between them, and view any logging information.<br />
<br />
=== Launching the Debug Tool ===<br />
<br />
To launch the Debug Tool, you first need to have the Task open and the appropriate tab selected. There are three ways to begin debugging the Task:<br />
<br />
- Click on the Debug Icon http://www.international-presence.com/wikidocs/images/debug_1.gif<br />
<br />
- Right click on the Task Design View (not on a [[Task Element]]) and select Debug from the pop-up menu<br />
<br />
- Click on the "Task" menu at the top of the Administration Client, and select "Debug Current Task".<br />
<br />
There is also a "Debug on..." option for the second and third methods. This allows you to select a server to debug the Task on if you have a multi-server environment.<br />
<br />
=== Using the Debug Tool ===<br />
<br />
Here is a screen-shot of the Debug Tool:<br />
<br />
http://www.international-presence.com/wikidocs/images/debug_2.gif<br />
<br />
There are four main components to this window.<br />
<br />
<ol><br />
<li><b>Stepping Controls</b><br />
These are at the top of the left hand panel. The controls consist of a Pause, Step, Play, and Fast Play button.</li><br />
<li><b>Context Inspector</b><br />
This is below the Stepping Controls and lets you inspect the current [[Presence Context]]</li><br />
<li><b>Task Log Viewer</b><br />
This allows you to view any log output generated by the Task in real time.</li><br />
<li><b>Task View</b><br />
This is a smaller version of the [[Task]], and the [[Task Element]] that is about to run will be highlighted.</li><br />
</ol><br />
<br />
=== Stepping Controls ===<br />
<br />
* <b>Pause:</b> This pauses the currently running Task if you have clicked on "Play" or "Fast Play".<br />
<br />
* <b>Step:</b> This executes the currently active [[Task Element]], highlights the next in the sequence, and waits for the user to press Step again.<br />
<br />
* <b>Play</b> This executes the entire Task, highlighting the currently executing [[Task Element]] as it proceeds through the sequence.<br />
<br />
* <b>Fast Play</b> This runs the remainder of the Task without any visual feedback as to where in the Task it is currently running.<br />
<br />
=== Context Inspector ===<br />
<br />
This allows you to inspect items in the [[Presence Context]] by clicking on the item and viewing the value in the pane to the right. The [[Data Table]] is presented as a tree, with each column name as a branch and each row as a leaf within the branch.<br />
<br />
[[Variables]] are displayed under the Data Table and are split into Local and [[Task Variables]]. Global Variables are not displayed here.<br />
<br />
==== Internal Variables ====<br />
<br />
These are Variables generated by Presence.<br />
<br />
* '''${presence.servername}''' - The host name of the server that the Task is running on.<br />
* '''${datatable.columncount}''' - The number of columns in the current Data Table<br />
* '''${datatable.rowcount}''' - The number of rows in the current Data Table<br />
<br />
=== Task Log Viewer ===<br />
<br />
=== Task View ===<br />
<br />
=== Breakpoints ===<br />
<br />
Presence allows you to add Breakpoints to your Tasks. To do so, in the Task Design View, right click on a [[Task Element]] and select "Add Breakpoint" from the pop-up menu.<br />
<br />
If you then click on the "Play" or "Fast Play" button, the Task will continue to run until it hits a Breakpoint, at which point it will stop and wait for user interaction.<br />
<br />
This feature is especially useful if you want to debug a specific part of Task but do not want to have to step through all the preceding [[Task Elements]].</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=DebugDebug2010-07-14T16:46:15Z<p>Admin: /* Stepping Controls */</p>
<hr />
<div>Before putting a Task on the [[Live Tasks Queue]] or enabling it to be called [[On Demand]], it is typically a good idea to test it out and make sure it's doing what you expect it to.<br />
<br />
This is where the Presence Debug Tool comes in handy. The Debug Tool allows you to step through the individual [[Task Elements]] one by one, examine the information that is passed between them, and view any logging information.<br />
<br />
=== Launching the Debug Tool ===<br />
<br />
To launch the Debug Tool, you first need to have the Task open and the appropriate tab selected. There are three ways to begin debugging the Task:<br />
<br />
- Click on the Debug Icon http://www.international-presence.com/wikidocs/images/debug_1.gif<br />
<br />
- Right click on the Task Design View (not on a [[Task Element]]) and select Debug from the pop-up menu<br />
<br />
- Click on the "Task" menu at the top of the Administration Client, and select "Debug Current Task".<br />
<br />
There is also a "Debug on..." option for the second and third methods. This allows you to select a server to debug the Task on if you have a multi-server environment.<br />
<br />
=== Using the Debug Tool ===<br />
<br />
Here is a screen-shot of the Debug Tool:<br />
<br />
http://www.international-presence.com/wikidocs/images/debug_2.gif<br />
<br />
There are four main components to this window.<br />
<br />
<ol><br />
<li><b>Stepping Controls</b><br />
These are at the top of the left hand panel. The controls consist of a Pause, Step, Play, and Fast Play button.</li><br />
<li><b>Context Inspector</b><br />
This is below the Stepping Controls and lets you inspect the current [[Presence Context]]</li><br />
<li><b>Task Log Viewer</b><br />
This allows you to view any log output generated by the Task in real time.</li><br />
<li><b>Task View</b><br />
This is a smaller version of the [[Task]], and the [[Task Element]] that is about to run will be highlighted.</li><br />
</ol><br />
<br />
=== Stepping Controls ===<br />
<br />
* <b>Pause:</b> This pauses the currently running Task if you have clicked on "Play" or "Fast Play".<br />
<br />
* <b>Step:</b> This executes the currently active [[Task Element]], highlights the next in the sequence, and waits for the user to press Step again.<br />
<br />
* <b>Play</b> This executes the entire Task, highlighting the currently executing [[Task Element]] as it proceeds through the sequence.<br />
<br />
* <b>Fast Play</b> This runs the remainder of the Task without any visual feedback as to where in the Task it is currently running.<br />
<br />
=== Context Inspector ===<br />
<br />
=== Task Log Viewer ===<br />
<br />
=== Task View ===<br />
<br />
=== Breakpoints ===<br />
<br />
Presence allows you to add Breakpoints to your Tasks. To do so, in the Task Design View, right click on a [[Task Element]] and select "Add Breakpoint" from the pop-up menu.<br />
<br />
If you then click on the "Play" or "Fast Play" button, the Task will continue to run until it hits a Breakpoint, at which point it will stop and wait for user interaction.<br />
<br />
This feature is especially useful if you want to debug a specific part of Task but do not want to have to step through all the preceding [[Task Elements]].</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=Administration_ClientAdministration Client2010-07-14T16:25:39Z<p>Admin: </p>
<hr />
<div>==== Key Facts ====<br />
{{ComponentQuickFacts|[[Task Designer|Creating, editing]], [[Live Tasks Queue|queuing]] and [[Debug|debugging]] [[Tasks]]|User Interface|presadmin.exe or Start menu shortcut}}<br />
<br />
<br />
The Presence Administration Client is the main interface for creating, editing and managing the execution of Presence [[Tasks]].<br />
<br />
== Starting the Administration Client ==<br />
<br />
To start the Presence Administration Client, go to Start > Programs > Presence V3 > Administration > Presence Admin Console.<br />
<br />
You will be prompted to log in. You should use the administration username and password created during [[Installation]].<br />
<br />
<br />
http://www.international-presence.com/wikidocs/images/logon_dialog.gif<br />
<br />
<br />
The Domain Passphrase is set per [[Presence Domain]]. This is typically blank on a fresh installation, but can be set to something more secure using the [[Set Passphrase]] tool.<br />
<br />
== At a Glance ==<br />
<br />
The following highlights the main components of the Administration Client:<br />
<br />
http://www.international-presence.com/wikidocs/images/admin_client_1.png<br />
<br />
=== Task Explorer ===<br />
<br />
The [[Task Explorer]] is a tree view of [[Categories]] and [[Tasks]]. To open a Task, just double click on it.<br />
<br />
=== Task Elements Toolbox ===<br />
<br />
Split into four panels, these are the building blocks for your Tasks. Drag [[Task Elements]] from here into the Task Canvas to add them to your Task.<br />
<br />
=== Resources Explorer ===<br />
<br />
The [[Resources Explorer]] is a tree view intended for displaying and managing [[Categories]] and [[Resources]].<br />
<br />
=== Task Designer Canvas ===<br />
<br />
This is the region of the screen where users build Tasks by dragging items from the Task Elements Toolbox and linking them together.<br />
<br />
See also: [[Task Designer]]<br />
<br />
=== Menu and Toolbar ===<br />
<br />
See: [[Menu Options]], [[Toolbar Items]]<br />
<br />
{{ArchitectureLinks|Client Components}}</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=Presence_User_ManagementPresence User Management2010-07-14T15:30:21Z<p>Admin: </p>
<hr />
<div>{{AdminClient}}<br />
<br />
<br />
{{UnderConstruction}}<br />
<br />
<br />
http://www.international-presence.com/wikidocs/images/user_management.png<br />
<br />
The user management console allows Presence administrators to create, modify, delete and set permissions for other administration accounts. These actions are performed by right-clicking in the user list and using the pop-up menu.<br />
<br />
=== Security Levels ===<br />
<br />
Each user has a security level assigned, which can be one of:<br />
<br />
* Administrator<br />
* Manager<br />
* General User<br />
* Restricted<br />
<br />
<br />
{{AdminClientNavigation}}</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=XML_Document_WriterXML Document Writer2010-07-14T15:23:32Z<p>Admin: /* Enclose text in CDATA Section */</p>
<hr />
<div>== XML Document Writer ==<br />
<br />
The XML Document Writer (as opposed to the [[Basic XML Writer]]) creates a structured XML document based on:<br />
<br />
* A supplied XSD<br />
* Incoming Data Table<br />
<br />
XML Document Writer is an [[Anonymous Node]], meaning that it is not re-usable - copies can be made, but changes to one instance will not affect other instances.<br />
<br />
To create an XML Document Writer, simply drag the Node from the Data Formatters list into your Task. You will then be presented with the XML Document Writer dialog:<br />
<br />
=== Schema Location ===<br />
<br />
http://www.international-presence.com/wikidocs/images/xml_doc_writer_1.png<br />
<br />
==== XML Schema Location ====<br />
<br />
This is the location of the XSD schema that should be used to generate the document. It can be on your local network, on the internet or on an FTP server. Once selected you can view the raw XSD document in the window, as above. To change the schema once selected, click "Edit" - please note that this will impact selections made in subsequent panels.<br />
<br />
=== Document Format ===<br />
<br />
http://www.international-presence.com/wikidocs/images/xml_doc_writer_2.png<br />
<br />
<br />
As you can see, this panel is split into two distinct parts, with a tree representation of the schema on the left and the input panel on the right.<br />
<br />
The basic principle of this interface is that you can select an element or attribute from the tree on the left, then input the value in the text pane on the right. This can be a literal String (e.g. "Bob Smith") or a variable reference (eg ${variable}) or more commonly a Data Table column reference (e.g. :var{SURNAME} ).<br />
<br />
==== Enclose text in CDATA Section ====<br />
<br />
This is recommended if you expect a large chunk of text, or text containing "&lt;" or "&gt;" characters. Everything inside a CDATA Section is ignored by XML parsers.<br />
<br />
==== Treat this text as a comment ====<br />
<br />
If this is selected any text will appear as a comment in the XML document, i.e. it will be enclosed by a comment tag as follows:<br />
<br />
&lt;!-- this is a comment! --&gt;<br />
<br />
==== Element Repetition ====<br />
<br />
By default Elements will not be repeated, however you can control how an Element is repeated by selecting the Element you wish to repeat and choosing the "Element Repetition" tab and checking "Repeat occurrences of this Element":<br />
<br />
http://www.international-presence.com/wikidocs/images/xml_doc_writer_3.png<br />
<br />
You will then see a list of available columns (see above), and you should select the columns that this element should repeat for. For instance, above, we have selected "TRAP_NUMBER". This will cause the enclosing &lt;dog&gt; element to be repeated for each value of TRAP_NUMBER, which is the behaviour we want.<br />
<br />
==== Inclusion Rules ====<br />
<br />
This panel allows you to set [[Rules]] which control which values are included and which are not. If the value currently being considered does not match the rules specified then the Element will not be included in the final XML document.<br />
<br />
To add a rule, drag the column or variable name from the tree view on the left into the conditions panel and enter the rules you would like to include. As with similar functionality, rules can be stacked into AND / OR groups to fine-tune your requirements.<br />
<br />
=== Output ===<br />
<br />
http://www.international-presence.com/wikidocs/images/xml_doc_writer_4.png<br />
<br />
This panel allows you to confirm the location that the final XML document should be written to (a variable or a file location), in addition to previewing the results.<br />
<br />
Where variables or column references have been used you will be prompted to enter sample values in order to generate the preview. This is optional - you can click cancel.<br />
<br />
Click Okay to complete the Node and include it in your Task.<br />
<br />
&lt; Back to [[Task Elements]]<br />
<br />
----<br />
<br />
== See Also ==<br />
<br />
{{DataFormatters}}</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=Catch_Up_PolicyCatch Up Policy2010-07-14T15:01:05Z<p>Admin: </p>
<hr />
<div>This article is a technical discussion of how Presence deals with the Catch Up option in [[Schedule Nodes]].<br />
<br />
=== Introduction ===<br />
<br />
Catch Up policy affects the behaviour of the Schedule the first time it is used within the context of a Task, or when the Server has been inactive for a time. If Catch Up is enabled and a schedule should have run in the past, but failed to do so because the server wasn't running, or if the schedule didn't exist, the schedule will still trigger.<br />
<br />
http://www.international-presence.com/wikidocs/images/schedule_catchup.png<br />
<br />
=== Detail ===<br />
<br />
Each Schedule maintains a next run time which is associated with the Task in which the Schedule appears. If the following criteria are met:<br />
<br />
* Next run time has been set<br />
* Catch up is off<br />
* Next run time is in the past but less than 30 minutes ago<br />
<br />
then the next run time to set to zero (i.e. in the past) so we can recalculate, ensuring the Task runs at the scheduled time in the future.<br />
<br />
If the next run time is zero then calculate the next time to run (either from the start date if catchup is on, or from the current time if it is off).<br />
<br />
In summary this translates to:<br />
<br />
* If catch up is on and the next time to run is over 30 minutes ago, the schedule will run.<br />
* If catchup is off,then the next time to run will be recalculated from now.<br />
<br />
If the schedule has no next time to run, (ie it has never been cacluated), then the next time to run will be calculated from the start date, if catchup is on, or from the current time if it is off.<br />
<br />
If you are still confused, you're not alone. Please [mailto:roberts@presencebpm.com email us] if you have any questions.</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=Web_Services_NodesWeb Services Nodes2010-07-14T14:49:34Z<p>Admin: </p>
<hr />
<div>{{UnderConstruction|Screenshots are required}}<br />
<br />
<br />
==Introduction to Web Services and SOAP==<br />
<br />
A web service is any piece of software that makes itself available over the internet and uses a standardized XML messaging system. <br />
<br />
Web services range from such major services as storage management and customer relationship management (CRM) down to much more limited services such as the furnishing of a currency conversion rate and the checking of bids for an auction item. <br />
<br />
The accelerating creation and availability of these services is an important trend in the business world. <br />
<br />
XML is used to encode all communications to a web service. For example, a client invokes a web service by sending an XML message, then waits for a corresponding XML response. <br />
<br />
Because all communication is in XML, web services are not tied to any one operating system or programming language--Java can talk with Perl; Windows applications can talk with Unix applications.<br />
<br />
A WSDL (Web Services Description Language) file describes the public interface to the web service. <br />
<br />
This is an XML-based service description, which defines how external parties should communicate with the web service; namely, the protocol bindings and message formats required to interact with the web services listed in its directory. <br />
<br />
The supported operations and messages are described abstractly, and then bound to a concrete network protocol and message format.<br />
<br />
The Web Service Call can invoke Web Services using SOAP (Simple Object Access Protocol). SOAP is a lightweight XML-based messaging protocol used to encode the information in Web service request and response messages before sending them over a network. <br />
<br />
SOAP defines an envelope format and various rules for describing its contents.<br />
<br />
The Web Service Call task element allows you to invoke SOAP Web Services from Presence Tasks. The Web Service Call uses WSDL documents to create templates for specifying the request and response message.<br />
<br />
<hr/><br />
<br />
==Creating a Web Service Call==<br />
<br />
To create a Web Service Call, drag the icon from the Data Access / Web Services area of the Task Elements list.<br />
<br />
The Web Service Element dialog appears.<br />
<br />
==WSDL Location Tab==<br />
<br />
'''Name''' Name for the Web Service Call.<br />
<br />
'''WSDL Location''' The location of the WSDL document must be specified here. The WSDL document can be accessed from the internet or from a local file.<br />
<br />
The results of a Web Service call are returned in Data Table columns in the Presence Context. The Web Service task element can empty the Presence Context data table before the call or can merge the results of the call with the existing datatable, based on the selection in this panel.<br />
<br />
After specifying a WSDL file, an operation (along with any associated service and port) must be selected in the WSDL object tree:<br />
<br />
'''Information window''' - Additional detail about the selected object and it's usage can be found in the information box.<br />
<br />
If an operation is selected, the creation of the input message and querying of the output message can be defined. As the SOAP messages used for input and output are XML messages, the setup of the configuration if the input and output are similar to the XML Document Writer and the XML Query task element. To select an operation, double click it from the SOAP structure tree.<br />
<br />
==Input Tab==<br />
<br />
The input tab allows you to specify which nodes in the schema of the input SOAP message should be matched with which values, as well as controlling how those elements should be repeated and the rules that should be applied to determine whether they should be included or omitted.<br />
<br />
===Text Value Tab===<br />
<br />
To specify a value for a node, click on the node in the schema, then enter the value into the "Text Value" tab on the right hand pane. Values can be string literals, context variable references or data column references.<br />
<br />
===Element repetition tab===<br />
<br />
This tab allows you to control the repetition of the selected element. Select "Repeat occurrences of this element" to enable repetition. This will display a list of currently available data columns that are produced from the Task that is currently being edited. By checking a column this will result in the selected element to be repeated for each unique value of that element.<br />
<br />
===Inclusion Rules Tab===<br />
<br />
It is also possible to specify whether or not to include the element, or attribute, depending on the values of certain variables or columns (or function results).<br />
<br />
==Output Tab==<br />
<br />
The output tab allows you to specify which elements should be included in the result datatable from the output SOAP message.<br />
<br />
To select a Column to be included with you result - First select from the tree an Element or Attribute (Field), then drag this field to the main white space on the right of the screen. <br />
<br />
You can do this for as many columns as you need, you could also drag the whole of a root element across if you wanted to report on multiple fields; to do this drag the Root Element instead.<br />
<br />
'''Change Alias Button''' - Use this button to change the heading of the column when the results are returned.<br />
<br />
'''Clear Alias Button''' will revertthe alias to the automatically generated Alias.<br />
<br />
'''Move Up Button''' Use this button to move the currently selected element up the pick list. Field names listed at the top will appear nearer to the left in the column list when your query results are returned.<br />
<br />
'''Move Down Button''' Use this button to move the currently selected element down the pick list. This has the effect of formatting the column closer to the right when the results are returned.<br />
<br />
'''Remove Column Button''' Use this button to remove the selected element from the pick list.<br />
<br />
As each Element is selected from the tree an Info panel provides details about the element, this is useful for understanding the document structure.<br />
<br />
==Test tab==<br />
<br />
'''Test Button''' - Press this button to test the Web Service Call. If the call is successful and there are results to be returned you should see them formatted in the table.<br />
<br />
The "Input Message" and "Output Message" tabs let you see the SOAP message source, which can be useful for tracking problems.<br />
<br />
== See Also ==<br />
<br />
{{DataAccess}}</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=Template:UnderConstructionTemplate:UnderConstruction2010-07-14T14:48:52Z<p>Admin: </p>
<hr />
<div>{| style="text-align:center; width:100%; background:#faeaea; border:1px solid black"<br />
|-<br />
| '''Under Construction'''<br />
This page ({{PAGENAME}}) is currently undergoing modifications and may be incomplete. We apologise for any inconvenience.<br />
<br />
'''{{{1|No extra information has been provided.}}}'''<br />
<br />
Questions? [mailto:pryor@presencebpm.com Email Us].<br />
|}</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=Template:UnderConstructionTemplate:UnderConstruction2010-07-14T14:48:26Z<p>Admin: </p>
<hr />
<div>{| style="text-align:center; width:100%; background:#faeaea; border:1px solid black"<br />
|-<br />
| '''Under Construction'''<br />
This page ({{PAGENAME}}) is currently undergoing modifications and may be incomplete. We apologise for any inconvenience.<br />
<br />
'''{{{1|}}}'''<br />
<br />
Questions? [mailto:pryor@presencebpm.com Email Us].<br />
|}</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=Template:UnderConstructionTemplate:UnderConstruction2010-07-14T14:47:40Z<p>Admin: </p>
<hr />
<div>{| style="text-align:center; width:100%; background:#faeaea; border:1px solid black"<br />
|-<br />
| '''Under Construction'''<br />
This page ({{PAGENAME}}) is currently undergoing modifications and may be incomplete. We apologise for any inconvenience.<br />
'''{{{1}}}'''<br />
<br />
Questions? [mailto:pryor@presencebpm.com Email Us].<br />
|}</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=Template:UnderConstructionTemplate:UnderConstruction2010-07-14T14:47:03Z<p>Admin: </p>
<hr />
<div>{| style="text-align:center; width:100%; background:#faeaea; border:1px solid black"<br />
|-<br />
| '''Under Construction'''<br />
This page ({{PAGENAME}}) is currently undergoing modifications and may be incomplete. We apologise for any inconvenience.<br />
'''{1}'''<br />
<br />
Questions? [mailto:pryor@presencebpm.com Email Us].<br />
|}</div>Adminhttps://www.international-presence.com/wikidocs/index.php?title=PresenceWiki:HelpPresenceWiki:Help2010-07-14T14:44:25Z<p>Admin: </p>
<hr />
<div>Please don't write pages about NFL jerseys. We don't want to buy any, and nor do any of our customers.</div>Admin