Reasoners
Contents
Reasoner by Resource
Reasoner For each
Create
- MainMenu/Activities/Reasoner
- Click create
- Select For Each entity
- Enter a Name
- Once The Reasoner editor is open
- Enter Description
- Select the observer
- Select Topic from where you are getting the observation
- Select Action Create,
- Dialog Box for create will be open Select by recurso
- Select type of entity you want to create
- Enter a label to identify the action
- On right side click on action
- Select on right side new fields and user can see he can write the info using javascript
- Example:
-
function(newthing,observation,thing,summary){ newthing._name ="Entity77"+ new Date().getTime().toString(); newthing.DoubleData = observation.ObsDoubleData; newthing.description ="Testing Create by recurso"; }
- Note: there are required fields if user does not enter them the reasoner wont run
- Run reasoner
Expected
For each entity returned by observer system will create a new entity
Update
Same steps as Create
function(updatething,observation,thing){
updatedthing.description ="Bless be the ones who serve others. They are the ones who find heaven on earth.";
updatedthing.CityPopulation = 123000123;
}
Expected The system will update each entity returned by the observer
Send Notification
same as for each send notification by properties
Delete
same as for each Delete by properties
Send Observations
function(newobservation,observation,thing){
newobservation._name = "SendObserRecurso"+ new Date().getTime().toString();
newobservation.topic = observation.topic; (Required field)
newobservation.producer = observation.producer; (Required field)
}
Note: there are required fields if user does not enter them the reasoner wont run
Schedule Send Observation
The same as send observation user just need to specify Initiation Date and time, occurrence and frequency Note:
Occurrence 0 must enter frequency like; sec, mins, hours etc If user for example enters frequency days that means observation will be send every day forever Starting on the Start date and Time
Occurrence 1 frequency will be ignore. The system will send that schedule observation on the Start Date and Time only once
Occurrence 2 or more must enter frequency. The system will send the observation according to frequency and Start Date and Time
function(newobservation,observation,thing){
newobservation._name = "SendObserRecurso"+ new Date().getTime().toString();
newobservation.topic = observation.topic; (Required field)
newobservation.producer = observation.producer; (Required field)
}
Note: there are required fields if user does not enter them the reasoner wont run
Expected
For each Entity returned by the observer the system will schedule to send a new observation
Reasoner At Least One
Create
- MainMenu/Activities/Reasoner
- Click create
- Select At least one Entity
- Enter a Name
- Once The Reasoner editor is open
- Enter Description
- Select the observer
- Select Topic from where you are getting the observation
- Select Action Create,
- Dialog Box for create will be open Select by recurso
- Select type of entity you want to create
- Enter a label to identify the action
- On right side click on action
- Select on right side new fields and user can see he can write the info using javascript
- Example:
-
function(newthing,observation,thing){ newthing._name ="Entity55"; newthing.DoubleData = observation.ObsDoubleData; newthing.description ="Testing Reasoner At least One Create by recurso"; }
- Note: there are required fields if user does not enter them the reasoner wont run
- Run reasoner
Expected
If Observer return at least one Entity the system will create a new entity if observer does not return entity system won't create the new Entity
Send Notifications
same as send Notification by properties
Send Observations
function(newobservation,observation,thing){
newobservation._name = "SendObserRecurso333"; (Mandatory Field)
newobservation.topic = observation.topic; (Mandatory Field)
newobservation.producer = observation.producer; (Mandatory Field)
}
Schedule Send Observations
The same as send observation user just need to specify Initiation Date and time, occurrence and frequency Note:
Occurrence 0 must enter frequency like; sec, mins, hours etc If user for example enters frequency days that means observation will be send every day forever Starting on the Start date and Time
Occurrence 1 frequency will be ignore. The system will send that schedule observation on the Start Date and Time only once
Occurrence 2 or more must enter frequency. The system will send the observation according to frequency and Start Date and Time
function(newobservation,observation){
newobservation.producer = "Copertino";
}
Expected
If Observer return at least one entity the system will Schedule to send a new Observation
Reasoner Only Observations
Create
function(newthing,observation){
newthing._name ="EntityObsOnlyRecurso";
newthing.DoubleData = observation.ObsDoubleData;
newthing.description ="Testing Reasoner Obs Only Create by recurso";
}
Expected
If the run of Observer is positive the system will Create a New Entity
Send Notifications
same as send notification by properties
Send Observations
function(newobservation,observation){
newobservation._name = "SendObserRecursoObsOnly";
newobservation.topic = observation.topic; (Mandatory field)
newobservation.producer = observation.producer; (Mandatory field)
}
Expected
If the run of Observer is positive the system will Send the observation
Schedule Send Observations
The same as send observation on Action select schedule observations user just need to specify Initiation Date and time, occurrence and frequency
Note:
Occurrence 0 must enter frequency like; sec, mins, hours etc If user for example enters frequency days that means observation will be send every day forever Starting on the Start date and Time
Occurrence 1 frequency will be ignore. The system will send that schedule observation on the Start Date and Time only once
Occurrence 2 or more must enter frequency. The system will send the observation according to frequency and Start Date and Time
function(newobservation,observation){
newobservation._name = "ScheduleSendObserRecursoObsOnly";
newobservation.topic = observation.topic;
newobservation.producer = observation.producer;
}
Expected
If the run of Observer is positive the system will Send the observation
according to the schedule
Reasoner Absence of things
Create
function(newthing,observation){
newthing._name ="EntityDoNotReturnRecurso111";
newthing.DoubleData = observation.ObsDoubleData;
newthing.description ="Testing Reasoner Do not return entity Create by recurso";
}
Expected
If Observer do not return an entity the system will create a new entity
Send Notifications
Send Observations
function(newobservation,observation){
newobservation._name = "SendObserRecursoNoEntity";
newobservation.topic = observation.topic;
newobservation.producer = observation.producer;
}
Expected
If Observer do not return an entity the system will Send Observation
Schedule Send Observations
function(newobservation,observation){
newobservation._name = "ScheduleSendObserRecursoNoEntity";
newobservation.topic = observation.topic;
newobservation.producer = observation.producer;
}
Expected
If Observer do not return an entity the system will Schedule and send observation according to schedule
Reasoner Increment, Decrement, Set
First this only works for numeric fields like integer or double when user set a supported property that is double or integer of a type of entity he has to check the check box for atomic updates Then this only works for reasoner for each by property action updates
on the right side user will be able to select from set, increment or decrement then there is an entry box to enter a numeric value on how much you want decrement or increment or set is just to set a fix value
for example Field to update is Temp max that initially was 2 then user select increment then enter 2 then user runs reasoner on temp max the result will be 4
Reasoner proximity Area
Proximity area option will allow the user to set an entity to the proximity area field to a new entity created by the reasoner
User can do this several ways
- User just selects the entity from the list
- User does a binding where user selects the proximity area that was selected on the observer
- Using Javascript he can do the two previous options
example :
proximityarea = observation.proximityarea;
proximityarea = "/amtech/things/entities/TempEntity/TempNewPort";
Note:In case Entity does not exist results windows wont alert user