public interface Placeable<T extends Placeable<T>> extends TopologyElement
DISTRIBUTED,
 STREAMING_ANALYTICS_SERVICE
 or DISTRIBUTED_TESTER context.
 | Modifier and Type | Method and Description | 
|---|---|
| T | addResourceTags(java.lang.String... tags)Add required resource tags for this topology element for distributed submission. | 
| T | colocate(Placeable<?>... elements)Colocate this element with other topology elements so that
 at runtime they all execute within the same processing element
 (PE or operating system process). | 
| default java.lang.String | getInvocationName()Return the invocation name of this element. | 
| java.util.Set<java.lang.String> | getResourceTags()Get the set of resource tags this element requires. | 
| T | invocationName(java.lang.String name)Set the invocation name of this placeable. | 
| boolean | isPlaceable()Can this element have placement directives applied to it. | 
| com.ibm.streamsx.topology.builder.BOperatorInvocation | operator() | 
builder, topologyboolean isPlaceable()
true if placement directives can be assigned, false if it can not.T colocate(Placeable<?>... elements)
elements may contain any Placeable within
 the same topology, there is no requirement
 that the element is connected (by a stream) directly or indirectly
 to this element.
 
 
 When a set of colocated elements are completely within a single parallel
 region then the colocation constraint is limited to that channel. So if elements
 A and B are colocated then it
 is guaranteed that A[0],B[0] from channel 0 are in a single PE
 and A[1],B[1]from channel 1 are in a single PE,
 but typically a different PE to A[0],B[0].
 
 When a a set of colocated elements are not completely within a single parallel
 region then the colocation constraint applies to the whole topology.
 So if A,B are in a parallel region but C is outside then
 all the replicas of A,B are colocated with C and each other. 
 
Colocation is also referred to as fusing, when topology elements are connected by streams then the communication between them is in-process using direct method calls (instead of a network transport such as TCP).
elements - Elements to colocate with this container.IllegalStateExeception - Any element including this returns false for isPlaceable().T addResourceTags(java.lang.String... tags)
colocated
 with will execute on a resource (host) that has all the tags returned by
 getResourceTags().tags - Tags to be required at runtime.java.util.Set<java.lang.String> getResourceTags()
colocated
 with other topology elements then the returned set is the union
 of all resource tags added to each colocated element.default java.lang.String getInvocationName()
isPlaceable() is true
 otherwise null.invocationName(String)T invocationName(java.lang.String name)
 Names must be unique within a topology, if this name
 is already in use then the 'name_N' will be used
 where N is a number that makes the name unique
 within the topology.
 
For example the invocation for sending alerts as SMS (text) messages could be named as SMSAlerts:
 
 TStream<Alert> alerts = ...
 
 alerts.forEach(Alert::sendAsTextMsg).name("SMSAlerts"); 
 
 
 
 
 Note that name will eventually resolve into an identifier for
 an operator name and/or a stream name. Identifiers are limited
 to ASCII characters, thus name will be modified at code
 generation time if it cannot be represented as an identifier.
 
name - Name to assigned.java.lang.IllegalStateException - isPlaceable() returns false.getInvocationName()com.ibm.streamsx.topology.builder.BOperatorInvocation operator()