Stream windowing

Within the application logic, stream windowing needs to be added after deciding the type of grouping on the unbounded data records.

The architecture of the windowing code depends on the type of stream, keyed or not, and the type of window assigner.

// If needed we create a window computation of the transaction summaries by item and time window
		if (params.getBoolean(ENABLE_SUMMARIES_KEY, false)) {
			DataStream<TransactionSummary> transactionSummaryStream = processedTransactions
					.keyBy("transaction.itemId")
					.timeWindow(Time.minutes(10))
					.aggregate(new TransactionSummaryAggregator())
					.name("Create Transaction Summary")
					.uid("Create Transaction Summary")
					.filter(new SummaryAlertingCondition(params))
					.name("Filter High failure rate");

			writeTransactionSummaries(params, transactionSummaryStream);
		}

		return env;
DataStream Class Definiton
.keyBy Defining key for keyed streams.
.timeWindow Type of windowing method with value.
.aggregate Data transformation type that is applied on the windowed data.
.uid Defining ID for the operator.
.filter Data transformation type that is applied on the windowed data.

To develop the windowing and to configure parameters, see the example of Apache Flink documentation.