diff options
Diffstat (limited to 'behaviors/SwitchBehavior.py')
-rw-r--r-- | behaviors/SwitchBehavior.py | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/behaviors/SwitchBehavior.py b/behaviors/SwitchBehavior.py new file mode 100644 index 0000000..1fb755d --- /dev/null +++ b/behaviors/SwitchBehavior.py @@ -0,0 +1,24 @@ +from operationscore.Behavior import * +import util.ComponentRegistry as compReg + +class SwitchBehavior(Behavior): + """ + SwitchBehavior is a behavior that transform into different behaviors base on the input data. + The behavior expects Args in the form of <Prefix>s mapping to <Behavior ID>s. The behavior detects the prefix on the data and use the corresponding Behavior to process the data and return the outputs. + In Config file, include: + <Prefix>Behavior's ID<Prefix> + <DefaultBehavior>Default behavior's ID<DefaultBehavior> + """ + def behaviorInit(self): + self.defaultBehavior = compReg.getComponent(self['DefaultBehavior']) + self.currBehavior = None + + def processResponse(self, sInputs, rInputs): + dataStr = sInputs[-1]['Data'] + if dataStr[0] in self.argDict: + self.currBehavior = compReg.getComponent(self[dataStr[0]]) + sInputs[-1]['Data'] = sInputs[-1]['Data'][1:] # remove prefix + return self.currBehavior.processResponse(sInputs, rInputs) + else: + return self.defaultBehavior.processsResponse(sInputs, rInputs) + |