Examples

Examples

Copy field to another field

This example will copy the LastName to the FirstName of a Person but only if the LastName has changed and it not empty.

Steps:

  • Check if LastName is changed. Link output 1 because we want to check if changed = true.
  • Check if LastName is not empty. Link output 2 because we want to check if empty = false.
  • Get value of LastName field.
  • Set Value of FirstName field.

Corresponding configuration:

{"drawflow":{"Home":{"data":{"15":{"typenode":false,"outputs":{"output_1":{"connections":[{"output":"input_1","node":"19"}]}},"pos_y":199,"pos_x":26,"data":{"checksum":"1649a6c885bae2e98172410550fd3f9270642e134ab65ad3c0a69a55b970572e","basebo":"Person","confversion":"726","appversion":"2.10.0","solutiontype":"SX","undefined":"Person"},"inputs":{},"name":"Start of flow","html":"","id":15,"class":"start"},"17":{"typenode":false,"outputs":{"output_1":{"connections":[{"output":"input_1","node":"18"}]}},"pos_y":350,"pos_x":909,"data":{"elementname":"LastName","dataobject":"Target"},"inputs":{"input_1":{"connections":[{"node":"20","input":"output_2"}]}},"name":"Get field value (Static)","html":"","id":17,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.element.GetElementStatic"},"18":{"typenode":false,"outputs":{"output_1":{"connections":[]}},"pos_y":325,"pos_x":1198,"data":{"elementname":"FirstName","dataobject":"Target"},"inputs":{"input_1":{"connections":[{"node":"17","input":"output_1"}]}},"name":"Set field value","html":"","id":18,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.element.SetElement"},"19":{"typenode":false,"outputs":{"output_2":{"connections":[]},"output_1":{"connections":[{"output":"input_1","node":"20"}]}},"pos_y":321,"pos_x":312,"data":{"elementname":"LastName","dataobject":"Target"},"inputs":{"input_1":{"connections":[{"node":"15","input":"output_1"}]}},"name":"Field changed (ITE)","html":"","id":19,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.element.ElementChangedStaticIfThenElse"},"20":{"typenode":false,"outputs":{"output_2":{"connections":[{"output":"input_1","node":"17"}]},"output_1":{"connections":[]}},"pos_y":321,"pos_x":606,"data":{"elementname":"LastName","dataobject":"Target"},"inputs":{"input_1":{"connections":[{"node":"19","input":"output_1"}]}},"name":"Field empty (ITE)","html":"","id":20,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.element.ElementEmptyStaticIfThenElse"}}}}}

Copy field to another field (Convenience function)

Because 7.1 contains 4 steps to do this action this would be very laborious to do on every copy.

A more intelligent convenience function is created to solve this. It includes all the steps from 7.1 and has also some more options to check.

Corresponding configuration:

{"drawflow":{"Home":{"data":{"15":{"typenode":false,"outputs":{"output_1":{"connections":[{"output":"input_1","node":"21"}]}},"pos_y":199,"pos_x":26,"data":{"checksum":"011902fab020ddac16b63b08fb2ea0cef468a256e66e0ca62ea1b257b732bb86","basebo":"Person","confversion":"727","appversion":"2.10.0","solutiontype":"SX","undefined":"Person"},"inputs":{},"name":"Start of flow","html":"","id":15,"class":"start"},"21":{"typenode":false,"outputs":{"output_1":{"connections":[]}},"pos_y":237,"pos_x":323,"data":{"targetelementname":"FirstName","elementname":"LastName","targetdataobject":"Target","dataobject":"Target","sourcenotempty":"true","sourcechanged":"true"},"inputs":{"input_1":{"connections":[{"node":"15","input":"output_1"}]}},"name":"Copy value of field","html":"","id":21,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.element.CopyElement"}}}}}

This example will copy the name of the linked property to the FirstName of the person. The same Copy value of field can be used. Via the referencefield the property can be fetched and with the . (dot) notation the field of that property can be read.

Corresponding configuration:

{"drawflow":{"Home":{"data":{"15":{"typenode":false,"outputs":{"output_1":{"connections":[{"output":"input_1","node":"16"}]}},"pos_y":199,"pos_x":26,"data":{"checksum":"39ecb88e9248312e8818102dbdb4323171774b8a2278a96b1cf808cad7e9f89c","basebo":"Person","confversion":"728","appversion":"2.10.0","solutiontype":"SX","undefined":"Person"},"inputs":{},"name":"Start of flow","html":"","id":15,"class":"start"},"16":{"typenode":false,"outputs":{"output_1":{"connections":[]}},"pos_y":239,"pos_x":374,"data":{"targetelementname":"FirstName","elementname":"PropertyRef.Name","targetdataobject":"Target","dataobject":"Target","sourcenotempty":"true","sourcechanged":"false"},"inputs":{"input_1":{"connections":[{"node":"15","input":"output_1"}]}},"name":"Copy value of field","html":"","id":16,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.element.CopyElement"}}}}}

Construct email address

This example will copy construct the email address based on the FirstName and LastName and saves it to the email field.

Corresponding configuration:

{"drawflow":{"Home":{"data":{"15":{"typenode":false,"outputs":{"output_1":{"connections":[{"output":"input_1","node":"22"},{"output":"input_1","node":"23"}]}},"pos_y":191,"pos_x":20,"data":{"checksum":"d8727aedef454c7f0a2f25f3c9cd2c587c0c586dae290ce9b20e1c37bf7da30f","basebo":"Person","confversion":"729","appversion":"2.10.0","solutiontype":"SX","undefined":"Person"},"inputs":{},"name":"Start of flow","html":"","id":15,"class":"start"},"22":{"typenode":false,"outputs":{"output_1":{"connections":[{"output":"input_1","node":"24"}]}},"pos_y":192.33333333333334,"pos_x":386,"data":{"elementname":"FirstName","dataobject":"Target"},"inputs":{"input_1":{"connections":[{"node":"15","input":"output_1"}]}},"name":"Get field value (Static)","html":"","id":22,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.element.GetElementStatic"},"23":{"typenode":false,"outputs":{"output_1":{"connections":[{"output":"input_1","node":"24"}]}},"pos_y":479,"pos_x":384,"data":{"elementname":"LastName","dataobject":"Target"},"inputs":{"input_1":{"connections":[{"node":"15","input":"output_1"}]}},"name":"Get field value (Static)","html":"","id":23,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.element.GetElementStatic"},"24":{"typenode":false,"outputs":{"output_1":{"connections":[{"output":"input_1","node":"25"}]}},"pos_y":307,"pos_x":709,"data":{"message":"%s.%s@planonsoftware.com"},"inputs":{"input_1":{"connections":[{"node":"22","input":"output_1"},{"node":"23","input":"output_1"}]},"input_2":{"connections":[]}},"name":"Format string","html":"","id":24,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.string.Format"},"25":{"typenode":false,"outputs":{"output_1":{"connections":[]}},"pos_y":318,"pos_x":1029,"data":{"elementname":"Email","dataobject":"Target"},"inputs":{"input_1":{"connections":[{"node":"24","input":"output_1"}]}},"name":"Set field value","html":"","id":25,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.element.SetElement"}}}}}

Check postalcode

This example will check if the provided postalcode is valid on a property.

Steps:

  • Get PostalCode field value
  • Match value with regular expression ^[1-9][0-9]{3} ?(?!sa|sd|ss|SA|SD|SS)[A-Za-z]{2}$. When not matched output 2 will be executed.
  • Show an error Postal code is not valid. For dutch users a dutch message “Postcode is niet juist” will be showed.

Corresponding configuration:

{"drawflow":{"Home":{"data":{"15":{"typenode":false,"outputs":{"output_1":{"connections":[{"output":"input_1","node":"29"}]}},"pos_y":191,"pos_x":20,"data":{"checksum":"3e631fd66453527aea81cb8f17431ab380951242ff52953f2da055e728495e0d","basebo":"Property","confversion":"730","appversion":"2.10.0","solutiontype":"SX","undefined":"Property"},"inputs":{},"name":"Start of flow","html":"","id":15,"class":"start"},"28":{"typenode":false,"outputs":{"output_2":{"connections":[{"output":"input_1","node":"30"}]},"output_1":{"connections":[]}},"pos_y":323,"pos_x":627,"data":{"regex":"^[1-9][0-9]{3} ?(?!sa|sd|ss|SA|SD|SS)[A-Za-z]{2}$"},"inputs":{"input_1":{"connections":[{"node":"29","input":"output_1"}]}},"name":"MatchRegEx (ITE)","html":"","id":28,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.comparison.MatchRegExIfThenElse"},"29":{"typenode":false,"outputs":{"output_1":{"connections":[{"output":"input_1","node":"28"}]}},"pos_y":339,"pos_x":323,"data":{"elementname":"PostalCode","dataobject":"Target"},"inputs":{"input_1":{"connections":[{"node":"15","input":"output_1"}]}},"name":"Get field value (Static)","html":"","id":29,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.element.GetElementStatic"},"30":{"typenode":false,"outputs":{},"pos_y":330,"pos_x":957,"data":{"errorid":"5929","message":"Postal code is not valid.","langnld":"Postcode is niet juist"},"inputs":{"input_1":{"connections":[{"node":"28","input":"output_2"}]}},"name":"Show error","html":"","id":30,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.notification.ErrorMessage"}}}}}

Create event based notification

This example will check create a new eventbased notification task once a UsrOrder has been changed.

Steps:

  • Create Task BusinessObject
  • NotificationRef -> NotificationEventBasedDefinition is searched based on the provided code.
  • BODefinitionRef -> Is filled with the BOtype of the changing UsrOrder.
  • BORef -> Is filled with the syscode of the changing UsrOrder
  • PlannedDateTime -> is set with the current systemtime.
  • Task BO is saved.

Corresponding configuration:

{"drawflow":{"Home":{"data":{"132":{"typenode":false,"outputs":{"output_1":{"connections":[{"output":"input_1","node":"133"}]}},"pos_y":329,"pos_x":32,"data":{"checksum":"9aaf429391b82146509d5aebadcc7a6dd9f58c55e7236e562365d30e2e611d85","basebo":"UsrOrder","confversion":"731","appversion":"2.10.0","solutiontype":"SX","undefined":"UsrOrder"},"inputs":{},"name":"Start of flow","html":"","id":132,"class":"start"},"133":{"typenode":false,"outputs":{"output_1":{"connections":[{"output":"input_1","node":"135"},{"output":"input_1","node":"144"},{"output":"input_1","node":"145"},{"output":"input_1","node":"146"},{"output":"input_1","node":"141"}]}},"pos_y":488.77777777777777,"pos_x":350,"data":{"elementname":"Task"},"inputs":{"input_1":{"connections":[{"node":"132","input":"output_1"}]}},"name":"Create businessobject","html":"","id":133,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.element.Create"},"134":{"typenode":false,"outputs":{"output_1":{"connections":[{"output":"input_1","node":"136"}]}},"pos_y":102,"pos_x":1023,"data":{"elementname":"Syscode","dataobject":"@NotificationEventBasedDefinition"},"inputs":{"input_1":{"connections":[{"node":"135","input":"output_1"}]}},"name":"Get field value (Static)","html":"","id":134,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.element.GetElementStatic"},"135":{"typenode":false,"outputs":{"output_2":{"connections":[]},"output_1":{"connections":[{"output":"input_1","node":"134"}]}},"pos_y":93,"pos_x":732,"data":{"elementname":"NotificationEventBasedDefinition","lookupvalue":"EM001"},"inputs":{"input_1":{"connections":[{"node":"133","input":"output_1"}]}},"name":"Find by lookup (Static)","html":"","id":135,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.element.FindByLookupStatic"},"136":{"typenode":false,"outputs":{"output_1":{"connections":[]}},"pos_y":67,"pos_x":1319,"data":{"elementname":"NotificationRef","dataobject":"@Task"},"inputs":{"input_1":{"connections":[{"node":"134","input":"output_1"}]}},"name":"Set field value","html":"","id":136,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.element.SetElement"},"138":{"typenode":false,"outputs":{"output_1":{"connections":[{"output":"input_1","node":"139"}]}},"pos_y":421,"pos_x":1028,"data":{"elementname":"Syscode","dataobject":"RefBODefinitionUserDefined"},"inputs":{"input_1":{"connections":[{"node":"146","input":"output_1"}]}},"name":"Get field value (Static)","html":"","id":138,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.element.GetElementStatic"},"139":{"typenode":false,"outputs":{"output_1":{"connections":[]}},"pos_y":394,"pos_x":1319,"data":{"elementname":"BODefinitionRef","dataobject":"@Task"},"inputs":{"input_1":{"connections":[{"node":"138","input":"output_1"}]}},"name":"Set field value","html":"","id":139,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.element.SetElement"},"141":{"typenode":false,"outputs":{"output_1":{"connections":[{"output":"input_1","node":"142"}]}},"pos_y":785,"pos_x":740,"data":{"elementname":"Syscode","dataobject":"Target"},"inputs":{"input_1":{"connections":[{"node":"133","input":"output_1"}]}},"name":"Get field value (Static)","html":"","id":141,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.element.GetElementStatic"},"142":{"typenode":false,"outputs":{"output_1":{"connections":[]}},"pos_y":740,"pos_x":1040,"data":{"elementname":"BORef","dataobject":"@Task"},"inputs":{"input_1":{"connections":[{"node":"141","input":"output_1"}]}},"name":"Set field value","html":"","id":142,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.element.SetElement"},"143":{"typenode":false,"outputs":{"output_1":{"connections":[]}},"pos_y":1042.5714285714287,"pos_x":1041,"data":{"elementname":"PlannedDateTime","dataobject":"@Task"},"inputs":{"input_1":{"connections":[{"node":"144","input":"output_1"}]}},"name":"Set field value","html":"","id":143,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.element.SetElement"},"144":{"typenode":false,"outputs":{"output_1":{"connections":[{"output":"input_1","node":"143"}]}},"pos_y":1058,"pos_x":747,"data":{},"inputs":{"input_1":{"connections":[{"node":"133","input":"output_1"}]}},"name":"System date","html":"","id":144,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.date.SystemDate"},"145":{"typenode":false,"outputs":{"output_1":{"connections":[]}},"pos_y":1238,"pos_x":747,"data":{"dataobject":"@Task"},"inputs":{"input_1":{"connections":[{"node":"133","input":"output_1"}]}},"name":"Save data","html":"","id":145,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.element.Save"},"146":{"typenode":false,"outputs":{"output_2":{"connections":[]},"output_1":{"connections":[{"output":"input_1","node":"138"}]}},"pos_y":360,"pos_x":732,"data":{"elementname":"RefBODefinitionUserDefined","dataobject":"Target"},"inputs":{"input_1":{"connections":[{"node":"133","input":"output_1"}]}},"name":"Goto element (Static)","html":"","id":146,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.element.GoToElementStatic"}}}}}

Search businessobject based on 1 unique field

This example will search a Property in Planon based on 1 unique String field. This example is triggered from an insert or update on a person.

Steps:

  • Get value of FreeString1 on the person
  • Provide the value to the “Find by unique field” function. Provide the (UD)BO systemname which must be searched. In this case a Property.

Corresponding configuration:

{"drawflow":{"Home":{"data":{"2":{"typenode":false,"outputs":{"output_1":{"connections":[{"output":"input_1","node":"91"}]}},"pos_y":1595.1818181818182,"pos_x":-1304.1818181818182,"data":{"checksum":"02018c07a5c68d15d5e3d9720ae11c8726011fc1a30bb107e2b13662f7c79ef8","basebo":"Person","confversion":"719","appversion":"2.10.0","solutiontype":"SX"},"inputs":{},"name":"Start of flow","html":"","id":2,"class":"start"},"88":{"typenode":false,"outputs":{"output_2":{"connections":[{"output":"input_1","node":"93"}]},"output_1":{"connections":[{"output":"input_1","node":"92"}]}},"pos_y":1594.75,"pos_x":-603,"data":{"fieldname":"Code","elementname":"Property"},"inputs":{"input_1":{"connections":[{"node":"91","input":"output_1"}]}},"name":"Find by unique field","html":"","id":88,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.element.FindByUniqueField"},"91":{"typenode":false,"outputs":{"output_1":{"connections":[{"output":"input_1","node":"88"}]}},"pos_y":1597.25,"pos_x":-974,"data":{"elementname":"FreeString1","dataobject":"Target"},"inputs":{"input_1":{"connections":[{"node":"2","input":"output_1"}]}},"name":"Get field value (S)","html":"","id":91,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.element.GetElementStatic"},"92":{"typenode":false,"outputs":{},"pos_y":1447.25,"pos_x":-60.25,"data":{"errorid":"11374","message":"Property found"},"inputs":{"input_1":{"connections":[{"node":"88","input":"output_1"}]}},"name":"Show warning","html":"","id":92,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.notification.Warning"},"93":{"typenode":false,"outputs":{},"pos_y":1837.25,"pos_x":-56.25,"data":{"errorid":"11374","message":"Property found"},"inputs":{"input_1":{"connections":[{"node":"88","input":"output_2"}]}},"name":"Show warning","html":"","id":93,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.notification.Warning"}}}}}

Search businessobject based on multiple unique fields (Expert mode)

This example is a more complex version of the previous example and will search a Space in Planon based on 2 unique String fields because the Code of a space is not unique. This example assumes a space with a unique code within a property.

This example is triggered from an insert or update on a person.

Steps:

  • Search Property based on the Code and a static String ‘BZ’
  • If found (upper output) get the value Syscode (systemcode) of the found Property.
  • Provide the value to the QuerySearchField and provide the searchfield (PropertyRef) and operator (Equal)
  • Add another QuerySearchField which will have a static input value ‘001’ as input and provide the searchfield ‘Code’ and also operator (Equal).
  • Both QuerySearchFields will be the input of the Find by query function (expert mode) which will actually execute the query based on the provided systemname of the (UD)BO (Space).

Corresponding configuration:

{"drawflow":{"Home":{"data":{"2":{"typenode":false,"outputs":{"output_1":{"connections":[{"output":"input_1","node":"94"}]}},"pos_y":836.25,"pos_x":-1363.5,"data":{"checksum":"cee33909edaafc400b1f29a85f4b0b393536d9d28e0c34cfbfc32f13ddbb8f78","basebo":"Person","confversion":"721","appversion":"2.10.0","solutiontype":"SX"},"inputs":{},"name":"Start of flow","html":"","id":2,"class":"start"},"88":{"typenode":false,"outputs":{"output_2":{"connections":[{"output":"input_1","node":"93"}]},"output_1":{"connections":[{"output":"input_1","node":"98"},{"output":"input_1","node":"99"}]}},"pos_y":839,"pos_x":-802.2222222222222,"data":{"fieldname":"Code","elementname":"Property"},"inputs":{"input_1":{"connections":[{"node":"94","input":"output_1"}]}},"name":"Find by unique field","html":"","id":88,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.element.FindByUniqueField"},"93":{"typenode":false,"outputs":{},"pos_y":1301.888888888889,"pos_x":-434,"data":{"errorid":"11374","message":"Property not found"},"inputs":{"input_1":{"connections":[{"node":"88","input":"output_2"}]}},"name":"Show warning","html":"","id":93,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.notification.Warning"},"94":{"typenode":false,"outputs":{"output_1":{"connections":[{"output":"input_1","node":"88"}]}},"pos_y":839.1111111111111,"pos_x":-1080.3333333333333,"data":{"staticvalue":"BZ"},"inputs":{"input_1":{"connections":[{"node":"2","input":"output_1"}]}},"name":"Static String","html":"","id":94,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.StaticString"},"95":{"typenode":false,"outputs":{"output_2":{"connections":[{"node":"101","output":"input_1"}]},"output_1":{"connections":[{"node":"102","output":"input_1"}]}},"pos_y":883,"pos_x":280,"data":{"elementname":"Space"},"inputs":{"input_1":{"connections":[{"node":"96","input":"output_1"},{"node":"100","input":"output_1"}]},"input_2":{"connections":[{"node":"100","input":"output_1"}]}},"name":"Find by query","html":"","id":95,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.element.FindByQuery"},"96":{"typenode":false,"outputs":{"output_1":{"connections":[{"output":"input_1","node":"95"}]}},"pos_y":670,"pos_x":-127,"data":{"elementname":"PropertyRef","operator":"EQUAL"},"inputs":{"input_1":{"connections":[{"node":"98","input":"output_1"}]}},"name":"QuerySearchField","html":"","id":96,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.element.QuerySearchField"},"98":{"typenode":false,"outputs":{"output_1":{"connections":[{"output":"input_1","node":"96"}]}},"pos_y":659,"pos_x":-443,"data":{"elementname":"Syscode","dataobject":"@Property"},"inputs":{"input_1":{"connections":[{"node":"88","input":"output_1"}]}},"name":"Get field value (S)","html":"","id":98,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.element.GetElementStatic"},"99":{"typenode":false,"outputs":{"output_1":{"connections":[{"output":"input_1","node":"100"}]}},"pos_y":1013,"pos_x":-435,"data":{"staticvalue":"001"},"inputs":{"input_1":{"connections":[{"node":"88","input":"output_1"}]}},"name":"Static String","html":"","id":99,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.StaticString"},"100":{"typenode":false,"outputs":{"output_1":{"connections":[{"output":"input_1","node":"95"},{"output":"input_2","node":"95"}]}},"pos_y":1005,"pos_x":-128,"data":{"elementname":"Code","operator":"EQUAL"},"inputs":{"input_1":{"connections":[{"node":"99","input":"output_1"}]}},"name":"QuerySearchField","html":"","id":100,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.element.QuerySearchField"},"101":{"id":101,"name":"Show warning","data":{"errorid":"11374","message":"Space not found"},"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.notification.Warning","html":"","typenode":false,"inputs":{"input_1":{"connections":[{"node":"95","input":"output_2"}]}},"outputs":{},"pos_x":652.25,"pos_y":1058},"102":{"id":102,"name":"Show warning","data":{"errorid":"11374","message":"Space found"},"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.notification.Warning","html":"","typenode":false,"inputs":{"input_1":{"connections":[{"node":"95","input":"output_1"}]}},"outputs":{},"pos_x":645,"pos_y":682.25}}}}}

Search businessobject based on SQL query (Expert mode)

This example is the most complex version of the previous example and will search a Space in Planon based on 2 unique String fields because the Code of a space is not unique. This example assumes a space with a unique code within a property.

With a SQL statement including a join it is possible to search a space directly including the property and space code.

This example is triggered from an insert or update on a person.

Steps:

  • Search space based on the property Code (first input and $1 in the SQL) and a space code (second input and $2 in the SQL)

SQL:


SELECT
	Space.Syscode as Syscode
FROM
	Space
	INNER JOIN Property
		ON Space.PropertyRef = Property.Syscode
WHERE
	Property.Code = $1 AND 
	Space.Code = $2

Corresponding configuration:

{"drawflow":{"Home":{"data":{"2":{"typenode":false,"outputs":{"output_1":{"connections":[{"output":"input_1","node":"94"},{"node":"104","output":"input_1"}]}},"pos_y":836.25,"pos_x":-1363.5,"data":{"checksum":"bbc39e616ce4427f162ba1e2da866328f909cffb69c560ed5d0f7035ed2f924a","basebo":"Person","confversion":"722","appversion":"2.10.0","solutiontype":"SX"},"inputs":{},"name":"Start of flow","html":"","id":2,"class":"start"},"94":{"typenode":false,"outputs":{"output_1":{"connections":[{"node":"103","output":"input_1"}]}},"pos_y":774,"pos_x":-1060.75,"data":{"staticvalue":"BZ"},"inputs":{"input_1":{"connections":[{"node":"2","input":"output_1"}]}},"name":"Static String","html":"","id":94,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.StaticString"},"101":{"typenode":false,"outputs":{},"pos_y":1124.25,"pos_x":-96,"data":{"errorid":"11374","message":"Space not found"},"inputs":{"input_1":{"connections":[{"node":"103","input":"output_2"}]}},"name":"Show warning","html":"","id":101,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.notification.Warning"},"102":{"typenode":false,"outputs":{},"pos_y":720.5,"pos_x":-100.25,"data":{"errorid":"11374","message":"Space found"},"inputs":{"input_1":{"connections":[{"node":"103","input":"output_1"}]}},"name":"Show warning","html":"","id":102,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.notification.Warning"},"103":{"id":103,"name":"Execute query","data":{"dataobject":"","sql":"SELECT\n\tSpace.Syscode as Syscode\nFROM\n\tSpace\n\tINNER JOIN Property\n\t\tON Space.PropertyRef = Property.Syscode\nWHERE\n\tProperty.Code = $1 AND \n\tSpace.Code = $2","elementname":"SpaceQuery"},"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.query.ExecuteQuery","html":"","typenode":false,"inputs":{"input_1":{"connections":[{"node":"94","input":"output_1"},{"node":"104","input":"output_1"}]},"input_2":{"connections":[{"node":"104","input":"output_1"}]}},"outputs":{"output_1":{"connections":[{"node":"102","output":"input_1"}]},"output_2":{"connections":[{"node":"101","output":"input_1"}]}},"pos_x":-734.25,"pos_y":945.5},"104":{"id":104,"name":"Static String","data":{"staticvalue":"001"},"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.StaticString","html":"","typenode":false,"inputs":{"input_1":{"connections":[{"node":"2","input":"output_1"}]}},"outputs":{"output_1":{"connections":[{"node":"103","output":"input_1"},{"node":"103","output":"input_2"}]}},"pos_x":-1063,"pos_y":1011.5}}}}}

Send webhook message to endpoint on insert/change.

This example will send a webhook message to the endpoint when a person will be inserted or updated. Offcourse it is possible to add some more checks in front to filter the situations.

This example is triggered from an insert or update on a person.

Steps:

  • Create basis authentication object with username and password to authorize against endpoint.
  • Call webhook with authorization selected. Provide endpoint and headers (when applicable). The content of the message can also be provided and [TYPE] and [PK] will be replace by the actual (UD)BO type and primarykey of the triggering (UD)BO.

Corresponding configuration:

{"drawflow":{"Home":{"data":{"2":{"typenode":false,"outputs":{"output_1":{"connections":[{"output":"input_1","node":"106"}]}},"pos_y":865,"pos_x":-1740.25,"data":{"checksum":"d2fce82acf4f0e23ffac5abbd000b51719862cde719149a33cfc2b049d2b62cd","basebo":"Person","confversion":"723","appversion":"2.10.0","solutiontype":"SX"},"inputs":{},"name":"Start of flow","html":"","id":2,"class":"start"},"105":{"typenode":false,"outputs":{"output_1":{"connections":[{"output":"input_1","node":"107"}]}},"pos_y":868,"pos_x":-1106.5,"data":{"authorization":"@basic","endpoint":"https://www.google.com","comments":"{\n  \"type\" : \"[TYPE]\",\n  \"pk\" : [PK]\n}","dataobject":"Target","requestheaders":"Content-Type:application/json"},"inputs":{"input_1":{"connections":[{"node":"106","input":"output_1"}]}},"name":"Call webhook","html":"","id":105,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.webservice.Webhook"},"106":{"typenode":false,"outputs":{"output_1":{"connections":[{"output":"input_1","node":"105"}]}},"pos_y":865.75,"pos_x":-1402,"data":{"elementname":"basic","password":"SyeQzxNe3LushpemG2twQ3aiRm2LtOgATzcRH9CXXxR+yryfv34uPS94timhyGnl","username":"test"},"inputs":{"input_1":{"connections":[{"node":"2","input":"output_1"}]}},"name":"Basic HTTP Auth","html":"","id":106,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.webservice.authorization.BasicAuthentication"},"107":{"typenode":false,"outputs":{},"pos_y":866.5,"pos_x":-776.25,"data":{"errorid":"9453","message":"%s"},"inputs":{"input_1":{"connections":[{"node":"105","input":"output_1"}]}},"name":"Show warning","html":"","id":107,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.notification.Warning"}}}}}

Incoming webservice

This example will process an incoming webservice call. The request is send by an external application to the endpoint https://<environment/sdk/platform/jaxrs/planonsoftware/apps/configurablebusinessrule/module/endpoint/.

and will be processed directly. It is also possible to send a request to the EventConnector endpoint.

https://<environment/sdk/platform/jaxrs/planonsoftware/apps/configurablebusinessrule/module/endpointec/

This will result in a inbound message and will be processed in the background. The response of the request will be the UUID of the InboundMessage.

{
    "message": "This message is queued and will be processed as soon as possible.",
    "uuid": "abf865bc-aa50-46c1-8f61-5e23c449848b"
}

Example steps:

  • Search Person based on its ID (Code).
  • Copy the firstname field from the request to the FirstName field of the Person
  • Save the Person
  • Add the Field status to the response which will be returned to the calling system.
  • In case of an error set response field Error to ‘Person not found’ and HTTP response code to 404.

Example success request (Postman):

Will result in:

Providing a code which does not exist will result in:

Corresponding configuration:

{"drawflow":{"Home":{"data":{"2":{"typenode":false,"outputs":{"output_1":{"connections":[{"output":"input_1","node":"31"}]}},"pos_y":224,"pos_x":114,"data":{"checksum":"832354c4644b352868af8432b95d5accbfbe1b86a818ebc6af11408aac9e5f99","basebo":"","confversion":"310","appversion":"2.10.0","solutiontype":"WS"},"inputs":{},"name":"Start of flow","html":"","id":2,"class":"start"},"31":{"typenode":false,"outputs":{"output_1":{"connections":[{"output":"input_1","node":"33"}]}},"pos_y":227,"pos_x":427,"data":{"elementname":"id","dataobject":"Source"},"inputs":{"input_1":{"connections":[{"node":"2","input":"output_1"}]}},"name":"Get field value (S)","html":"","id":31,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.element.GetElementStatic"},"33":{"typenode":false,"outputs":{"output_2":{"connections":[{"output":"input_1","node":"35"}]},"output_1":{"connections":[{"output":"input_1","node":"34"}]}},"pos_y":229,"pos_x":719,"data":{"elementname":"Person"},"inputs":{"input_1":{"connections":[{"node":"31","input":"output_1"}]}},"name":"Find by lookup","html":"","id":33,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.element.FindByLookup"},"34":{"typenode":false,"outputs":{"output_1":{"connections":[{"output":"input_1","node":"38"}]}},"pos_y":-47,"pos_x":1002,"data":{"targetelementname":"FirstName","elementname":"firstname","targetdataobject":"@Person","dataobject":"Source"},"inputs":{"input_1":{"connections":[{"node":"33","input":"output_1"}]}},"name":"Copy value of field","html":"","id":34,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.element.CopyElement"},"35":{"typenode":false,"outputs":{"output_1":{"connections":[{"output":"input_1","node":"37"}]}},"pos_y":602,"pos_x":995,"data":{"elementname":"Error","staticvalue":"Person not found","dataobject":"Target"},"inputs":{"input_1":{"connections":[{"node":"33","input":"output_2"}]}},"name":"Set String field","html":"","id":35,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.element.SetElementStaticString"},"36":{"typenode":false,"outputs":{"output_1":{"connections":[]}},"pos_y":600,"pos_x":1550,"data":{"dataobject":"Target"},"inputs":{"input_1":{"connections":[{"node":"37","input":"output_1"}]}},"name":"Set HTTP Code","html":"","id":36,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.webservice.SetHTTPCode"},"37":{"typenode":false,"outputs":{"output_1":{"connections":[{"output":"input_1","node":"36"}]}},"pos_y":604,"pos_x":1270,"data":{"staticvalue":"404"},"inputs":{"input_1":{"connections":[{"node":"35","input":"output_1"}]}},"name":"Static Integer","html":"","id":37,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.StaticInteger"},"38":{"typenode":false,"outputs":{"output_1":{"connections":[{"output":"input_1","node":"39"}]}},"pos_y":-49,"pos_x":1268,"data":{"dataobject":"@Person"},"inputs":{"input_1":{"connections":[{"node":"34","input":"output_1"}]}},"name":"Save data","html":"","id":38,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.element.Save"},"39":{"typenode":false,"outputs":{"output_1":{"connections":[]}},"pos_y":-48,"pos_x":1533,"data":{"elementname":"Status","staticvalue":"Success","dataobject":"Target"},"inputs":{"input_1":{"connections":[{"node":"38","input":"output_1"}]}},"name":"Set String field","html":"","id":39,"class":"planonsoftware.apps.configurablebusinessrule.logic.functions.implementations.element.SetElementStaticString"}}}}}