Class PythonSyncProcessService
java.lang.Object
de.iip_ecosphere.platform.services.environment.AbstractService
de.iip_ecosphere.platform.services.environment.AbstractRunnablesService
de.iip_ecosphere.platform.services.environment.AbstractPythonProcessService
de.iip_ecosphere.platform.services.environment.PythonSyncProcessService
- All Implemented Interfaces:
GenericMultiTypeService,ParameterConfigurerProvider,Service,ServiceBase
Generic command-line-based Python integration for multiple data types. Conventions:
- Python is determined by
PythonUtils.getPythonExecutable(). The default is "ServiceEnvironment.py" which must run for this integration with "--mode console". - A synchronous Python program receives the data including the symbolic type name as last (for "ServiceEnvironment.py" qualified by "--data") command line argument and returns the result on the command line including the symbolic type name.
- The Python program runs until the input data is processed.
- Author:
- Holger Eichelberger, SSE
-
Nested Class Summary
Nested classes/interfaces inherited from class de.iip_ecosphere.platform.services.environment.AbstractPythonProcessService
AbstractPythonProcessService.InputHandler, AbstractPythonProcessService.SyncDataIngestor<D> -
Field Summary
FieldsFields inherited from class de.iip_ecosphere.platform.services.environment.AbstractPythonProcessService
TYPE_SEPARATOR_CHARFields inherited from interface de.iip_ecosphere.platform.services.environment.switching.ServiceBase
APPLICATION_SEPARATOR, DEFAULT_APPLICATION_INSTANCE_ID -
Constructor Summary
ConstructorsConstructorDescriptionCreates an abstract service from YAML information.PythonSyncProcessService(String serviceId, InputStream ymlFile) Creates an instance from a service id and a YAML artifact. -
Method Summary
Modifier and TypeMethodDescriptionprotected static de.iip_ecosphere.platform.support.logging.LoggerReturns the logger.voidMigrates a service.<I> voidRequests asynchronous processing a data item.private <I,O> O processImpl(String inType, I data) Requests processing a data item.<I,O> O processSync(String inType, I data, String outType) Requests synchronous processing a data item.voidreconfigure(Map<String, String> values) Reconfigures the service.voidSwitches to an interface-compatible service.voidUpdates the service by the service in the givenlocation.Methods inherited from class de.iip_ecosphere.platform.services.environment.AbstractPythonProcessService
addParameterConfigurer, attachIngestor, compose, createAndCustomizeProcess, createScanInputThread, customizePythonArgs, enableFileDeletion, getAvgResponseTime, getHome, getInTypeInfo, getLocationKey, getOutTypeInfo, getOutTypeName, getParameterConfigurer, getParameterNames, getPythonExecutable, getTypeSubstitutionsJson, handleErrorStream, handleResult, initializeFrom, isFileDeletionEnabled, registerInOutRelation, registerInputTypeTranslator, registerOutputTypeTranslator, scanInputStream, start, startExecutableByName, stop, toJson, unbufferMethods inherited from class de.iip_ecosphere.platform.services.environment.AbstractRunnablesService
registerMethods inherited from class de.iip_ecosphere.platform.services.environment.AbstractService
activate, addConfigurer, addConfigurer, addConfigurer, addTypeSubstitution, createGenericInstance, createGenericInstance, createGenericInstanceByPlugin, createGenericMultiInstance, createGenericMultiInstance, createGenericMultiInstanceByPlugin, createInstance, createInstance, createInstance, createInstanceByPlugin, getArg, getDescription, getId, getKind, getName, getNetMgtKeyAddress, getResourceAsStream, getState, getStringArg, getSubstitutedType, getTypeCreator, getTypeSubstitutions, getVersion, isDeployable, isTopLevel, notifyReconfigured, passivate, reconf, reconfigure, rollbackReconfigurationOnFailure, setLibJars, setState, transferDataMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface de.iip_ecosphere.platform.services.environment.GenericMultiTypeService
processQuiet, processSyncQuietMethods inherited from interface de.iip_ecosphere.platform.services.environment.Service
activate, addTypeSubstitution, createType, createType, getDescription, getKind, getName, getNetMgtKeyAddress, getSubstitutedType, getTypeCreator, getTypeSubstitutions, getVersion, isDeployable, isTopLevel, passivateMethods inherited from interface de.iip_ecosphere.platform.services.environment.switching.ServiceBase
getId, getState, setState
-
Field Details
-
timeout
private int timeout -
timeoutUnit
-
reconfValues
-
-
Constructor Details
-
PythonSyncProcessService
Creates an instance from a service id and a YAML artifact.- Parameters:
serviceId- the service idymlFile- the YML file containing the YAML artifact with the service descriptor
-
PythonSyncProcessService
Creates an abstract service from YAML information.- Parameters:
yaml- the service information as read from YAML. By default, the Python executable is "ServiceEnvironment.py", which can be overridden byYamlProcess.getExecutable().YamlProcess.getHomePath()is set to the home path where the executable was extracted to. Further,YamlProcess.getCmdArg()are taken over if given.
-
-
Method Details
-
migrate
Description copied from interface:ServiceMigrates a service. However, it may be required to migrate/move the containing artifact. [adaptation]- Parameters:
resourceId- the target resource id, e.g., a device- Throws:
ExecutionException- if migration fails
-
update
Description copied from interface:ServiceUpdates the service by the service in the givenlocation. This operation is responsible for stopping the running service (if needed), replacing it, starting the new service.- Parameters:
location- the location of the new service, e.g., an URL- Throws:
ExecutionException- if the given service cannot be updated for some reason, e.g., because the replacement service is not an evolved version of the running service
-
switchTo
Description copied from interface:ServiceSwitches to an interface-compatible service. This method cares for stopping the old service, performing a handover if adequate, starting thetargetservice. [adaptation]- Parameters:
targetId- the id of the target service- Throws:
ExecutionException- if switching the service cannot be performed for some reason
-
reconfigure
Description copied from interface:ServiceReconfigures the service. [adaptation]- Specified by:
reconfigurein interfaceService- Overrides:
reconfigurein classAbstractService- Parameters:
values- the (service-specific) name-value mapping that shall lead to a reconfiguration of the service; values come either as primitive values or as JSON structures complying with the parameter descriptor. The service is responsible for correct JSON de-serialization according to the respective descriptor.- Throws:
ExecutionException- if reconfiguration fails
-
getLogger
protected static de.iip_ecosphere.platform.support.logging.Logger getLogger()Returns the logger.- Returns:
- the logger
-
processImpl
Requests processing a data item.- Type Parameters:
I- the input data typeO- the output data type- Parameters:
inType- the name ofinTypein the configuration modeldata- the data item to be processed- Returns:
- the output, always null in case of asynchronous processing as the result is passed to a registered ingestor
- Throws:
ExecutionException- if the execution fails for some reason, e.g., because type translators are not registered (@link #registerInputTypeTranslator(Class, Class, TypeTranslator, TypeTranslator)}
-
process
Description copied from interface:GenericMultiTypeServiceRequests asynchronous processing a data item.- Type Parameters:
I- the input data type- Parameters:
inType- the name ofinTypein the configuration modeldata- the data item to be processed- Throws:
ExecutionException- if the execution fails for some reason, e.g., because type translators are not registered (@link #registerInputTypeTranslator(Class, Class, TypeTranslator, TypeTranslator)}
-
processSync
Description copied from interface:GenericMultiTypeServiceRequests synchronous processing a data item.- Type Parameters:
I- the input data typeO- the output data type- Parameters:
inType- the name ofinTypein the configuration modeldata- the data item to be processedoutType- the name ofoutTypein the configuration model- Returns:
- the output, always null in case of asynchronous processing as the result is passed to a registered ingestor
- Throws:
ExecutionException- if the execution fails for some reason, e.g., because type translators are not registered (@link #registerInputTypeTranslator(Class, Class, TypeTranslator, TypeTranslator)}
-