You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beam.apache.org by gi...@apache.org on 2019/09/20 20:39:41 UTC

[beam] branch asf-site updated: Publishing website 2019/09/20 20:39:28 at commit b19c5b5

This is an automated email from the ASF dual-hosted git repository.

git-site-role pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/beam.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new a13e59a  Publishing website 2019/09/20 20:39:28 at commit b19c5b5
a13e59a is described below

commit a13e59adfa7d4928c42cf2d327908d358236ec28
Author: jenkins <bu...@apache.org>
AuthorDate: Fri Sep 20 20:39:28 2019 +0000

    Publishing website 2019/09/20 20:39:28 at commit b19c5b5
---
 .../documentation/execution-model/index.html       |   9 +-
 website/generated-content/documentation/index.html |   9 +-
 .../io/built-in/google-bigquery/index.html         |   9 +-
 .../documentation/io/built-in/hadoop/index.html    |   9 +-
 .../documentation/io/built-in/hcatalog/index.html  |   9 +-
 .../documentation/io/built-in/index.html           |   9 +-
 .../documentation/io/built-in/parquet/index.html   |   9 +-
 .../documentation/io/developing-io-java/index.html |   9 +-
 .../io/developing-io-overview/index.html           |   9 +-
 .../io/developing-io-python/index.html             |   9 +-
 .../documentation/io/testing/index.html            |   9 +-
 .../{custom-io-patterns => custom-io}/index.html   |  13 +-
 .../custom-windows}/index.html                     | 173 +++++++++++++--------
 .../index.html                                     |  13 +-
 .../documentation/patterns/overview/index.html     |  26 ++--
 .../index.html                                     |  13 +-
 .../index.html                                     |  13 +-
 .../pipelines/create-your-pipeline/index.html      |   9 +-
 .../pipelines/design-your-pipeline/index.html      |   9 +-
 .../pipelines/test-your-pipeline/index.html        |   9 +-
 .../documentation/programming-guide/index.html     |   9 +-
 .../resources/learning-resources/index.html        |   9 +-
 .../resources/videos-and-podcasts/index.html       |   9 +-
 .../documentation/runners/jstorm/index.html        |   9 +-
 .../aggregation/approximatequantiles/index.html    |   9 +-
 .../java/aggregation/approximateunique/index.html  |   9 +-
 .../java/aggregation/cogroupbykey/index.html       |   9 +-
 .../transforms/java/aggregation/combine/index.html |   9 +-
 .../java/aggregation/combinewithcontext/index.html |   9 +-
 .../transforms/java/aggregation/count/index.html   |   9 +-
 .../java/aggregation/distinct/index.html           |   9 +-
 .../java/aggregation/groupbykey/index.html         |   9 +-
 .../java/aggregation/groupintobatches/index.html   |   9 +-
 .../transforms/java/aggregation/latest/index.html  |   9 +-
 .../transforms/java/aggregation/max/index.html     |   9 +-
 .../transforms/java/aggregation/mean/index.html    |   9 +-
 .../transforms/java/aggregation/min/index.html     |   9 +-
 .../transforms/java/aggregation/sample/index.html  |   9 +-
 .../transforms/java/aggregation/sum/index.html     |   9 +-
 .../transforms/java/aggregation/top/index.html     |   9 +-
 .../transforms/java/elementwise/filter/index.html  |   9 +-
 .../java/elementwise/flatmapelements/index.html    |   9 +-
 .../transforms/java/elementwise/keys/index.html    |   9 +-
 .../transforms/java/elementwise/kvswap/index.html  |   9 +-
 .../java/elementwise/mapelements/index.html        |   9 +-
 .../transforms/java/elementwise/pardo/index.html   |   9 +-
 .../java/elementwise/partition/index.html          |   9 +-
 .../transforms/java/elementwise/regex/index.html   |   9 +-
 .../transforms/java/elementwise/reify/index.html   |   9 +-
 .../java/elementwise/tostring/index.html           |   9 +-
 .../transforms/java/elementwise/values/index.html  |   9 +-
 .../java/elementwise/withkeys/index.html           |   9 +-
 .../java/elementwise/withtimestamps/index.html     |   9 +-
 .../transforms/java/other/create/index.html        |   9 +-
 .../transforms/java/other/flatten/index.html       |   9 +-
 .../transforms/java/other/passert/index.html       |   9 +-
 .../transforms/java/other/view/index.html          |   9 +-
 .../transforms/java/other/window/index.html        |   9 +-
 .../transforms/java/overview/index.html            |   9 +-
 .../aggregation/approximatequantiles/index.html    |   9 +-
 .../aggregation/approximateunique/index.html       |   9 +-
 .../python/aggregation/cogroupbykey/index.html     |   9 +-
 .../python/aggregation/combineglobally/index.html  |   9 +-
 .../aggregation/combinewithcontext/index.html      |   9 +-
 .../transforms/python/aggregation/count/index.html |   9 +-
 .../python/aggregation/distinct/index.html         |   9 +-
 .../python/aggregation/groupbykey/index.html       |   9 +-
 .../python/aggregation/groupintobatches/index.html |   9 +-
 .../python/aggregation/latest/index.html           |   9 +-
 .../transforms/python/aggregation/max/index.html   |   9 +-
 .../transforms/python/aggregation/mean/index.html  |   9 +-
 .../transforms/python/aggregation/min/index.html   |   9 +-
 .../python/aggregation/sample/index.html           |   9 +-
 .../transforms/python/aggregation/sum/index.html   |   9 +-
 .../transforms/python/aggregation/top/index.html   |   9 +-
 .../python/elementwise/filter/index.html           |   9 +-
 .../python/elementwise/flatmap/index.html          |   9 +-
 .../transforms/python/elementwise/keys/index.html  |   9 +-
 .../python/elementwise/kvswap/index.html           |   9 +-
 .../transforms/python/elementwise/map/index.html   |   9 +-
 .../transforms/python/elementwise/pardo/index.html |   9 +-
 .../python/elementwise/partition/index.html        |   9 +-
 .../transforms/python/elementwise/regex/index.html |   9 +-
 .../transforms/python/elementwise/reify/index.html |   9 +-
 .../python/elementwise/tostring/index.html         |   9 +-
 .../python/elementwise/values/index.html           |   9 +-
 .../python/elementwise/withkeys/index.html         |   9 +-
 .../python/elementwise/withtimestamps/index.html   |   9 +-
 .../transforms/python/other/create/index.html      |   9 +-
 .../transforms/python/other/flatten/index.html     |   9 +-
 .../transforms/python/other/passert/index.html     |   9 +-
 .../transforms/python/other/reshuffle/index.html   |   9 +-
 .../transforms/python/other/view/index.html        |   9 +-
 .../transforms/python/other/windowinto/index.html  |   9 +-
 .../transforms/python/overview/index.html          |   9 +-
 .../images/standard-vs-dynamic-sessions.png        | Bin 0 -> 26026 bytes
 96 files changed, 595 insertions(+), 457 deletions(-)

diff --git a/website/generated-content/documentation/execution-model/index.html b/website/generated-content/documentation/execution-model/index.html
index 4d52a9a..511fb90 100644
--- a/website/generated-content/documentation/execution-model/index.html
+++ b/website/generated-content/documentation/execution-model/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/index.html b/website/generated-content/documentation/index.html
index 2dde771..5f66eb5 100644
--- a/website/generated-content/documentation/index.html
+++ b/website/generated-content/documentation/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/io/built-in/google-bigquery/index.html b/website/generated-content/documentation/io/built-in/google-bigquery/index.html
index f2cb825..95b4b46 100644
--- a/website/generated-content/documentation/io/built-in/google-bigquery/index.html
+++ b/website/generated-content/documentation/io/built-in/google-bigquery/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/io/built-in/hadoop/index.html b/website/generated-content/documentation/io/built-in/hadoop/index.html
index 1eecdf6..a386fc6 100644
--- a/website/generated-content/documentation/io/built-in/hadoop/index.html
+++ b/website/generated-content/documentation/io/built-in/hadoop/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/io/built-in/hcatalog/index.html b/website/generated-content/documentation/io/built-in/hcatalog/index.html
index ddf88e0..69ccf15 100644
--- a/website/generated-content/documentation/io/built-in/hcatalog/index.html
+++ b/website/generated-content/documentation/io/built-in/hcatalog/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/io/built-in/index.html b/website/generated-content/documentation/io/built-in/index.html
index 13e69a6..4d1e8c8 100644
--- a/website/generated-content/documentation/io/built-in/index.html
+++ b/website/generated-content/documentation/io/built-in/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/io/built-in/parquet/index.html b/website/generated-content/documentation/io/built-in/parquet/index.html
index f451255..e358d5d 100644
--- a/website/generated-content/documentation/io/built-in/parquet/index.html
+++ b/website/generated-content/documentation/io/built-in/parquet/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/io/developing-io-java/index.html b/website/generated-content/documentation/io/developing-io-java/index.html
index 45d74fd..1993590 100644
--- a/website/generated-content/documentation/io/developing-io-java/index.html
+++ b/website/generated-content/documentation/io/developing-io-java/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/io/developing-io-overview/index.html b/website/generated-content/documentation/io/developing-io-overview/index.html
index 84f6ed5..3cf146b 100644
--- a/website/generated-content/documentation/io/developing-io-overview/index.html
+++ b/website/generated-content/documentation/io/developing-io-overview/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/io/developing-io-python/index.html b/website/generated-content/documentation/io/developing-io-python/index.html
index d29dcab..d3ae740 100644
--- a/website/generated-content/documentation/io/developing-io-python/index.html
+++ b/website/generated-content/documentation/io/developing-io-python/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/io/testing/index.html b/website/generated-content/documentation/io/testing/index.html
index acce2e8..26dcf1e 100644
--- a/website/generated-content/documentation/io/testing/index.html
+++ b/website/generated-content/documentation/io/testing/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/patterns/custom-io-patterns/index.html b/website/generated-content/documentation/patterns/custom-io/index.html
similarity index 98%
rename from website/generated-content/documentation/patterns/custom-io-patterns/index.html
rename to website/generated-content/documentation/patterns/custom-io/index.html
index c8d7349..e436ea2 100644
--- a/website/generated-content/documentation/patterns/custom-io-patterns/index.html
+++ b/website/generated-content/documentation/patterns/custom-io/index.html
@@ -39,7 +39,7 @@
   <script src="/js/fix-menu.js"></script>
   <script src="/js/section-nav.js"></script>
   <script src="/js/page-nav.js"></script>
-  <link rel="canonical" href="https://beam.apache.org/documentation/patterns/custom-io-patterns/" data-proofer-ignore>
+  <link rel="canonical" href="https://beam.apache.org/documentation/patterns/custom-io/" data-proofer-ignore>
   <link rel="shortcut icon" type="image/x-icon" href="/images/favicon.ico">
   <link rel="alternate" type="application/rss+xml" title="Apache Beam" href="https://beam.apache.org/feed.xml">
   <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.4.1/css/all.css" integrity="sha384-5sAR7xN1Nv6T6+dT2mhtzEpVJvfS3NScPQTrOxhwjIuvcA67KV2R5Jz6kr4abQsz" crossorigin="anonymous">
@@ -141,7 +141,7 @@
             GitHub links will not resolve until the markdown source is available on the master branch.
             New pages would fail validation during development / PR test automation.
           -->
-          <a href="https://github.com/apache/beam/edit/master/website/src/documentation/patterns/custom-io-patterns.md" data-proofer-ignore>
+          <a href="https://github.com/apache/beam/edit/master/website/src/documentation/patterns/custom-io.md" data-proofer-ignore>
             <i class="far fa-edit fa-lg" alt="Edit on GitHub" title="Edit on GitHub"></i>
           </a>
         </li>
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/pipelines/create-your-pipeline/index.html b/website/generated-content/documentation/patterns/custom-windows/index.html
similarity index 71%
copy from website/generated-content/documentation/pipelines/create-your-pipeline/index.html
copy to website/generated-content/documentation/patterns/custom-windows/index.html
index 86ad1ac..d4037b4 100644
--- a/website/generated-content/documentation/pipelines/create-your-pipeline/index.html
+++ b/website/generated-content/documentation/patterns/custom-windows/index.html
@@ -28,7 +28,7 @@
   <meta charset="utf-8">
   <meta http-equiv="X-UA-Compatible" content="IE=edge">
   <meta name="viewport" content="width=device-width, initial-scale=1">
-  <title>Create Your Pipeline</title>
+  <title>Custom window patterns</title>
   <meta name="description" content="Apache Beam is an open source, unified model and set of language-specific SDKs for defining and executing data processing workflows, and also data ingestion and integration flows, supporting Enterprise Integration Patterns (EIPs) and Domain Specific Languages (DSLs). Dataflow pipelines simplify the mechanics of large-scale batch and streaming data processing and can run on a number of runtimes like Apache Flink, Apache Spark, and Google Cloud Dataflow  [...]
 ">
   <link href="https://fonts.googleapis.com/css?family=Roboto:100,300,400" rel="stylesheet">
@@ -39,7 +39,7 @@
   <script src="/js/fix-menu.js"></script>
   <script src="/js/section-nav.js"></script>
   <script src="/js/page-nav.js"></script>
-  <link rel="canonical" href="https://beam.apache.org/documentation/pipelines/create-your-pipeline/" data-proofer-ignore>
+  <link rel="canonical" href="https://beam.apache.org/documentation/patterns/custom-windows/" data-proofer-ignore>
   <link rel="shortcut icon" type="image/x-icon" href="/images/favicon.ico">
   <link rel="alternate" type="application/rss+xml" title="Apache Beam" href="https://beam.apache.org/feed.xml">
   <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.4.1/css/all.css" integrity="sha384-5sAR7xN1Nv6T6+dT2mhtzEpVJvfS3NScPQTrOxhwjIuvcA67KV2R5Jz6kr4abQsz" crossorigin="anonymous">
@@ -141,7 +141,7 @@
             GitHub links will not resolve until the markdown source is available on the master branch.
             New pages would fail validation during development / PR test automation.
           -->
-          <a href="https://github.com/apache/beam/edit/master/website/src/documentation/pipelines/create-your-pipeline.md" data-proofer-ignore>
+          <a href="https://github.com/apache/beam/edit/master/website/src/documentation/patterns/custom-windows.md" data-proofer-ignore>
             <i class="far fa-edit fa-lg" alt="Edit on GitHub" title="Edit on GitHub"></i>
           </a>
         </li>
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
@@ -447,12 +448,13 @@
 
 
 <ul class="nav">
-  <li><a href="#creating-your-pipeline-object">Creating Your Pipeline Object</a></li>
-  <li><a href="#reading-data-into-your-pipeline">Reading Data Into Your Pipeline</a></li>
-  <li><a href="#applying-transforms-to-process-pipeline-data">Applying Transforms to Process Pipeline Data</a></li>
-  <li><a href="#writing-or-outputting-your-final-pipeline-data">Writing or Outputting Your Final Pipeline Data</a></li>
-  <li><a href="#running-your-pipeline">Running Your Pipeline</a></li>
-  <li><a href="#whats-next">What’s next</a></li>
+  <li><a href="#using-data-to-dynamically-set-session-window-gaps">Using data to dynamically set session window gaps</a>
+    <ul>
+      <li><a href="#creating-data-driven-gaps">Creating data-driven gaps</a></li>
+      <li><a href="#windowing-messages-into-sessions">Windowing messages into sessions</a></li>
+      <li><a href="#example-data-and-windows">Example data and windows</a></li>
+    </ul>
+  </li>
 </ul>
 
 
@@ -472,102 +474,139 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
 -->
-<h1 id="create-your-pipeline">Create Your Pipeline</h1>
-
-<ul id="markdown-toc">
-  <li><a href="#creating-your-pipeline-object" id="markdown-toc-creating-your-pipeline-object">Creating Your Pipeline Object</a></li>
-  <li><a href="#reading-data-into-your-pipeline" id="markdown-toc-reading-data-into-your-pipeline">Reading Data Into Your Pipeline</a></li>
-  <li><a href="#applying-transforms-to-process-pipeline-data" id="markdown-toc-applying-transforms-to-process-pipeline-data">Applying Transforms to Process Pipeline Data</a></li>
-  <li><a href="#writing-or-outputting-your-final-pipeline-data" id="markdown-toc-writing-or-outputting-your-final-pipeline-data">Writing or Outputting Your Final Pipeline Data</a></li>
-  <li><a href="#running-your-pipeline" id="markdown-toc-running-your-pipeline">Running Your Pipeline</a></li>
-  <li><a href="#whats-next" id="markdown-toc-whats-next">What’s next</a></li>
-</ul>
 
-<p>Your Beam program expresses a data processing pipeline, from start to finish. This section explains the mechanics of using the classes in the Beam SDKs to build a pipeline. To construct a pipeline using the classes in the Beam SDKs, your program will need to perform the following general steps:</p>
+<h1 id="custom-window-patterns">Custom window patterns</h1>
+<p>The samples on this page demonstrate common custom window patterns. You can create custom windows with <a href="/documentation/programming-guide/#provided-windowing-functions"><code class="highlighter-rouge">WindowFn</code> functions</a>. For more information, see the <a href="/documentation/programming-guide/#windowing">programming guide section on windowing</a>.</p>
 
-<ul>
-  <li>Create a <code class="highlighter-rouge">Pipeline</code> object.</li>
-  <li>Use a <strong>Read</strong> or <strong>Create</strong> transform to create one or more <code class="highlighter-rouge">PCollection</code>s for your pipeline data.</li>
-  <li>Apply <strong>transforms</strong> to each <code class="highlighter-rouge">PCollection</code>. Transforms can change, filter, group, analyze, or otherwise process the elements in a <code class="highlighter-rouge">PCollection</code>. Each transform creates a new output <code class="highlighter-rouge">PCollection</code>, to which you can apply additional transforms until processing is complete.</li>
-  <li><strong>Write</strong> or otherwise output the final, transformed <code class="highlighter-rouge">PCollection</code>s.</li>
-  <li><strong>Run</strong> the pipeline.</li>
-</ul>
+<p><strong>Note</strong>: Custom merging windows isn’t supported in Python (with fnapi).</p>
 
-<h2 id="creating-your-pipeline-object">Creating Your Pipeline Object</h2>
+<h2 id="using-data-to-dynamically-set-session-window-gaps">Using data to dynamically set session window gaps</h2>
 
-<p>A Beam program often starts by creating a <code class="highlighter-rouge">Pipeline</code> object.</p>
+<p>You can modify the <a href="https://beam.apache.org/releases/javadoc/current/index.html?org/apache/beam/sdk/transforms/windowing/SlidingWindows.html"><code class="highlighter-rouge">assignWindows</code></a> function to use data-driven gaps, then window incoming data into sessions.</p>
 
-<p>In the Beam SDKs, each pipeline is represented by an explicit object of type <code class="highlighter-rouge">Pipeline</code>. Each <code class="highlighter-rouge">Pipeline</code> object is an independent entity that encapsulates both the data the pipeline operates over and the transforms that get applied to that data.</p>
+<p>Access the <code class="highlighter-rouge">assignWindows</code> function through <code class="highlighter-rouge">WindowFn.AssignContext.element()</code>. The original, fixed-duration <code class="highlighter-rouge">assignWindows</code> function is:</p>
 
-<p>To create a pipeline, declare a <code class="highlighter-rouge">Pipeline</code> object, and pass it some <a href="/documentation/programming-guide#configuring-pipeline-options">configuration options</a>.</p>
+<div class="language-java highlighter-rouge"><pre class="highlight"><code>
+<span class="kd">public</span> <span class="n">Collection</span><span class="o">&lt;</span><span class="n">IntervalWindow</span><span class="o">&gt;</span> <span class="nf">assignWindows</span><span class="o">(</span><span class="n">WindowFn</span><span class="o">.</span><span class="na">AssignContext</span> <span class="n">c</span><span class="o">)</span> <span class="o">{</span>
 
-<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="c1">// Start by defining the options for the pipeline.</span>
-<span class="n">PipelineOptions</span> <span class="n">options</span> <span class="o">=</span> <span class="n">PipelineOptionsFactory</span><span class="o">.</span><span class="na">create</span><span class="o">();</span>
+  <span class="c1">// Assign each element into a window from its timestamp until gapDuration in the</span>
+  <span class="c1">// future.  Overlapping windows (representing elements within gapDuration of</span>
+  <span class="c1">// each other) will be merged.</span>
+  <span class="k">return</span> <span class="n">Arrays</span><span class="o">.</span><span class="na">asList</span><span class="o">(</span><span class="k">new</span> <span class="n">IntervalWindow</span><span class="o">(</span><span class="n">c</span><span class="o">.</span><span class="na">timestamp</span><span class="o">(),</span> <span class="n">gapDuration</span><span class="o">));</span>
+<span class="o">}</span>
 
-<span class="c1">// Then create the pipeline.</span>
-<span class="n">Pipeline</span> <span class="n">p</span> <span class="o">=</span> <span class="n">Pipeline</span><span class="o">.</span><span class="na">create</span><span class="o">(</span><span class="n">options</span><span class="o">);</span>
 </code></pre>
 </div>
 
-<h2 id="reading-data-into-your-pipeline">Reading Data Into Your Pipeline</h2>
+<h3 id="creating-data-driven-gaps">Creating data-driven gaps</h3>
+<p>To create data-driven gaps, add the following snippets to the <code class="highlighter-rouge">assignWindows</code> function:</p>
+<ul>
+  <li>A default value for when the custom gap is not present in the data</li>
+  <li>A way to set the attribute from the main pipeline as a method of the custom windows</li>
+</ul>
 
-<p>To create your pipeline’s initial <code class="highlighter-rouge">PCollection</code>, you apply a root transform to your pipeline object. A root transform creates a <code class="highlighter-rouge">PCollection</code> from either an external data source or some local data you specify.</p>
+<p>For example, the following function assigns each element to a window between the timestamp and <code class="highlighter-rouge">gapDuration</code>:</p>
 
-<p>There are two kinds of root transforms in the Beam SDKs: <code class="highlighter-rouge">Read</code> and <code class="highlighter-rouge">Create</code>. <code class="highlighter-rouge">Read</code> transforms read data from an external source, such as a text file or a database table. <code class="highlighter-rouge">Create</code> transforms create a <code class="highlighter-rouge">PCollection</code> from an in-memory <code class="highlighter-rouge">java.util.Collection</code>.</p>
+<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="nd">@Override</span>
+<span class="kd">public</span> <span class="n">Collection</span><span class="o">&lt;</span><span class="n">IntervalWindow</span><span class="o">&gt;</span> <span class="nf">assignWindows</span><span class="o">(</span><span class="n">AssignContext</span> <span class="n">c</span><span class="o">)</span> <span class="o">{</span>
+  <span class="c1">// Assign each element into a window from its timestamp until gapDuration in the</span>
+  <span class="c1">// future.  Overlapping windows (representing elements within gapDuration of</span>
+  <span class="c1">// each other) will be merged.</span>
+  <span class="n">Duration</span> <span class="n">dataDrivenGap</span><span class="o">;</span>
+  <span class="n">TableRow</span> <span class="n">message</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="na">element</span><span class="o">();</span>
 
-<p>The following example code shows how to <code class="highlighter-rouge">apply</code> a <code class="highlighter-rouge">TextIO.Read</code> root transform to read data from a text file. The transform is applied to a <code class="highlighter-rouge">Pipeline</code> object <code class="highlighter-rouge">p</code>, and returns a pipeline data set in the form of a <code class="highlighter-rouge">PCollection&lt;String&gt;</code>:</p>
+  <span class="k">try</span> <span class="o">{</span>
+    <span class="n">dataDrivenGap</span> <span class="o">=</span> <span class="n">Duration</span><span class="o">.</span><span class="na">standardSeconds</span><span class="o">(</span><span class="n">Long</span><span class="o">.</span><span class="na">parseLong</span><span class="o">(</span><span class="n">message</span><span class="o">.</span><span class="na">get</span><span class="o">(</span><span class="s">"gap"</span><span class="o">).</span><span class="na">toString</span><span clas [...]
+  <span class="o">}</span> <span class="k">catch</span> <span class="o">(</span><span class="n">Exception</span> <span class="n">e</span><span class="o">)</span> <span class="o">{</span>
+    <span class="n">dataDrivenGap</span> <span class="o">=</span> <span class="n">gapDuration</span><span class="o">;</span>
+  <span class="o">}</span>
+  <span class="k">return</span> <span class="n">Arrays</span><span class="o">.</span><span class="na">asList</span><span class="o">(</span><span class="k">new</span> <span class="n">IntervalWindow</span><span class="o">(</span><span class="n">c</span><span class="o">.</span><span class="na">timestamp</span><span class="o">(),</span> <span class="n">dataDrivenGap</span><span class="o">));</span>
+<span class="o">}</span>
 
-<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="n">PCollection</span><span class="o">&lt;</span><span class="n">String</span><span class="o">&gt;</span> <span class="n">lines</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="na">apply</span><span class="o">(</span>
-  <span class="s">"ReadLines"</span><span class="o">,</span> <span class="n">TextIO</span><span class="o">.</span><span class="na">read</span><span class="o">().</span><span class="na">from</span><span class="o">(</span><span class="s">"gs://some/inputData.txt"</span><span class="o">));</span>
 </code></pre>
 </div>
 
-<h2 id="applying-transforms-to-process-pipeline-data">Applying Transforms to Process Pipeline Data</h2>
-
-<p>You can manipulate your data using the various <a href="/documentation/programming-guide/#transforms">transforms</a> provided in the Beam SDKs. To do this, you <strong>apply</strong> the trannsforms to your pipeline’s <code class="highlighter-rouge">PCollection</code> by calling the <code class="highlighter-rouge">apply</code> method on each <code class="highlighter-rouge">PCollection</code> that you want to process and passing the desired transform object as an argument.</p>
+<p>Then, set the <code class="highlighter-rouge">gapDuration</code> field in a windowing function:</p>
 
-<p>The following code shows how to <code class="highlighter-rouge">apply</code> a transform to a <code class="highlighter-rouge">PCollection</code> of strings. The transform is a user-defined custom transform that reverses the contents of each string and outputs a new <code class="highlighter-rouge">PCollection</code> containing the reversed strings.</p>
+<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="kd">public</span> <span class="kd">static</span> <span class="kd">class</span> <span class="nc">DynamicSessions</span> <span class="kd">extends</span> <span class="n">WindowFn</span><span class="o">&lt;</span><span class="n">TableRow</span><span class="o">,</span> <span class="n">IntervalWindow</span><span class="o">&gt;</span> <span class="o">{</span>
+  <span class="cm">/** Duration of the gaps between sessions. */</span>
+  <span class="kd">private</span> <span class="kd">final</span> <span class="n">Duration</span> <span class="n">gapDuration</span><span class="o">;</span>
 
-<p>The input is a <code class="highlighter-rouge">PCollection&lt;String&gt;</code> called <code class="highlighter-rouge">words</code>; the code passes an instance of a <code class="highlighter-rouge">PTransform</code> object called <code class="highlighter-rouge">ReverseWords</code> to <code class="highlighter-rouge">apply</code>, and saves the return value as the <code class="highlighter-rouge">PCollection&lt;String&gt;</code> called <code class="highlighter-rouge">reversedWords</code>.</p>
+  <span class="cm">/** Creates a {@code DynamicSessions} {@link WindowFn} with the specified gap duration. */</span>
+  <span class="kd">private</span> <span class="nf">DynamicSessions</span><span class="o">(</span><span class="n">Duration</span> <span class="n">gapDuration</span><span class="o">)</span> <span class="o">{</span>
+    <span class="k">this</span><span class="o">.</span><span class="na">gapDuration</span> <span class="o">=</span> <span class="n">gapDuration</span><span class="o">;</span>
+  <span class="o">}</span>
 
-<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="n">PCollection</span><span class="o">&lt;</span><span class="n">String</span><span class="o">&gt;</span> <span class="n">words</span> <span class="o">=</span> <span class="o">...;</span>
 
-<span class="n">PCollection</span><span class="o">&lt;</span><span class="n">String</span><span class="o">&gt;</span> <span class="n">reversedWords</span> <span class="o">=</span> <span class="n">words</span><span class="o">.</span><span class="na">apply</span><span class="o">(</span><span class="k">new</span> <span class="n">ReverseWords</span><span class="o">());</span>
 </code></pre>
 </div>
 
-<h2 id="writing-or-outputting-your-final-pipeline-data">Writing or Outputting Your Final Pipeline Data</h2>
+<h3 id="windowing-messages-into-sessions">Windowing messages into sessions</h3>
+<p>After creating data-driven gaps, you can window incoming data into the new, custom sessions.</p>
 
-<p>Once your pipeline has applied all of its transforms, you’ll usually need to output the results. To output your pipeline’s final <code class="highlighter-rouge">PCollection</code>s, you apply a <code class="highlighter-rouge">Write</code> transform to that <code class="highlighter-rouge">PCollection</code>. <code class="highlighter-rouge">Write</code> transforms can output the elements of a <code class="highlighter-rouge">PCollection</code> to an external data sink, such as a database [...]
+<p>First, set the session length to the gap duration:</p>
 
-<p>The following example code shows how to <code class="highlighter-rouge">apply</code> a <code class="highlighter-rouge">TextIO.Write</code> transform to write a <code class="highlighter-rouge">PCollection</code> of <code class="highlighter-rouge">String</code> to a text file:</p>
+<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="cm">/** Creates a {@code DynamicSessions} {@link WindowFn} with the specified gap duration. */</span>
+<span class="kd">public</span> <span class="kd">static</span> <span class="n">DynamicSessions</span> <span class="nf">withDefaultGapDuration</span><span class="o">(</span><span class="n">Duration</span> <span class="n">gapDuration</span><span class="o">)</span> <span class="o">{</span>
+  <span class="k">return</span> <span class="k">new</span> <span class="nf">DynamicSessions</span><span class="o">(</span><span class="n">gapDuration</span><span class="o">);</span>
+<span class="o">}</span>
 
-<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="n">PCollection</span><span class="o">&lt;</span><span class="n">String</span><span class="o">&gt;</span> <span class="n">filteredWords</span> <span class="o">=</span> <span class="o">...;</span>
 
-<span class="n">filteredWords</span><span class="o">.</span><span class="na">apply</span><span class="o">(</span><span class="s">"WriteMyFile"</span><span class="o">,</span> <span class="n">TextIO</span><span class="o">.</span><span class="na">write</span><span class="o">().</span><span class="na">to</span><span class="o">(</span><span class="s">"gs://some/outputData.txt"</span><span class="o">));</span>
 </code></pre>
 </div>
 
-<h2 id="running-your-pipeline">Running Your Pipeline</h2>
+<p>Lastly, window data into sessions in your pipeline:</p>
+
+<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="n">p</span><span class="o">.</span><span class="na">apply</span><span class="o">(</span>
+    <span class="s">"Window into sessions"</span><span class="o">,</span>
+    <span class="n">Window</span><span class="o">.&lt;</span><span class="n">TableRow</span><span class="o">&gt;</span><span class="n">into</span><span class="o">(</span>
+        <span class="n">DynamicSessions</span><span class="o">.</span><span class="na">withDefaultGapDuration</span><span class="o">(</span><span class="n">Duration</span><span class="o">.</span><span class="na">standardSeconds</span><span class="o">(</span><span class="mi">10</span><span class="o">))));</span>
 
-<p>Once you have constructed your pipeline, use the <code class="highlighter-rouge">run</code> method to execute the pipeline. Pipelines are executed asynchronously: the program you create sends a specification for your pipeline to a <strong>pipeline runner</strong>, which then constructs and runs the actual series of pipeline operations.</p>
+</code></pre>
+</div>
 
-<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="n">p</span><span class="o">.</span><span class="na">run</span><span class="o">();</span>
+<h3 id="example-data-and-windows">Example data and windows</h3>
+<p>The following test data tallies two users’ scores with and without the <code class="highlighter-rouge">gap</code> attribute:</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>.apply("Create data", Create.timestamped(
+            TimestampedValue.of("{\"user\":\"user-1\",\"score\":\"12\",\"gap\":\"5\"}", new Instant()),
+            TimestampedValue.of("{\"user\":\"user-2\",\"score\":\"4\"}", new Instant()),
+            TimestampedValue.of("{\"user\":\"user-1\",\"score\":\"-3\",\"gap\":\"5\"}", new Instant().plus(2000)),
+            TimestampedValue.of("{\"user\":\"user-1\",\"score\":\"2\",\"gap\":\"5\"}", new Instant().plus(9000)),
+            TimestampedValue.of("{\"user\":\"user-1\",\"score\":\"7\",\"gap\":\"5\"}", new Instant().plus(12000)),
+            TimestampedValue.of("{\"user\":\"user-2\",\"score\":\"10\"}", new Instant().plus(12000)))
+        .withCoder(StringUtf8Coder.of()))
 </code></pre>
 </div>
 
-<p>The <code class="highlighter-rouge">run</code> method is asynchronous. If you’d like a blocking execution instead, run your pipeline appending the <code class="highlighter-rouge">waitUntilFinish</code> method:</p>
+<p>The diagram below visualizes the test data:</p>
 
-<div class="language-java highlighter-rouge"><pre class="highlight"><code><span class="n">p</span><span class="o">.</span><span class="na">run</span><span class="o">().</span><span class="na">waitUntilFinish</span><span class="o">();</span>
+<p><img src="/images/standard-vs-dynamic-sessions.png" alt="Two sets of data and the standard and dynamic sessions with which the data is windowed." /></p>
+
+<h4 id="standard-sessions">Standard sessions</h4>
+
+<p>Standard sessions use the following windows and scores:</p>
+<div class="highlighter-rouge"><pre class="highlight"><code>user=user-2, score=4, window=[2019-05-26T13:28:49.122Z..2019-05-26T13:28:59.122Z)
+user=user-1, score=18, window=[2019-05-26T13:28:48.582Z..2019-05-26T13:29:12.774Z)
+user=user-2, score=10, window=[2019-05-26T13:29:03.367Z..2019-05-26T13:29:13.367Z)
 </code></pre>
 </div>
 
-<h2 id="whats-next">What’s next</h2>
+<p>User #1 sees two events separated by 12 seconds. With standard sessions, the gap defaults to 10 seconds; both scores are in different sessions, so the scores aren’t added.</p>
 
-<ul>
-  <li><a href="/documentation/programming-guide">Programming Guide</a> - Learn the details of creating your pipeline, configuring pipeline options, and applying transforms.</li>
-  <li><a href="/documentation/pipelines/test-your-pipeline">Test your pipeline</a>.</li>
-</ul>
+<p>User #2 sees four events, seperated by two, seven, and three seconds, respectively. Since none of the gaps are greater than the default, the four events are in the same standard session and added together (18 points).</p>
+
+<h4 id="dynamic-sessions">Dynamic sessions</h4>
+<p>The dynamic sessions specify a five-second gap, so they use the following windows and scores:</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>user=user-2, score=4, window=[2019-05-26T14:30:22.969Z..2019-05-26T14:30:32.969Z)
+user=user-1, score=9, window=[2019-05-26T14:30:22.429Z..2019-05-26T14:30:30.553Z)
+user=user-1, score=9, window=[2019-05-26T14:30:33.276Z..2019-05-26T14:30:41.849Z)
+user=user-2, score=10, window=[2019-05-26T14:30:37.357Z..2019-05-26T14:30:47.357Z)
+</code></pre>
+</div>
+
+<p>With dynamic sessions, User #2 gets different scores. The third messages arrives seven seconds after the second message, so it’s grouped into a different session. The large, 18-point session is split into two 9-point sessions.</p>
 
       </div>
     </div>
diff --git a/website/generated-content/documentation/patterns/file-processing-patterns/index.html b/website/generated-content/documentation/patterns/file-processing/index.html
similarity index 98%
rename from website/generated-content/documentation/patterns/file-processing-patterns/index.html
rename to website/generated-content/documentation/patterns/file-processing/index.html
index 9245a44..58329da 100644
--- a/website/generated-content/documentation/patterns/file-processing-patterns/index.html
+++ b/website/generated-content/documentation/patterns/file-processing/index.html
@@ -39,7 +39,7 @@
   <script src="/js/fix-menu.js"></script>
   <script src="/js/section-nav.js"></script>
   <script src="/js/page-nav.js"></script>
-  <link rel="canonical" href="https://beam.apache.org/documentation/patterns/file-processing-patterns/" data-proofer-ignore>
+  <link rel="canonical" href="https://beam.apache.org/documentation/patterns/file-processing/" data-proofer-ignore>
   <link rel="shortcut icon" type="image/x-icon" href="/images/favicon.ico">
   <link rel="alternate" type="application/rss+xml" title="Apache Beam" href="https://beam.apache.org/feed.xml">
   <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.4.1/css/all.css" integrity="sha384-5sAR7xN1Nv6T6+dT2mhtzEpVJvfS3NScPQTrOxhwjIuvcA67KV2R5Jz6kr4abQsz" crossorigin="anonymous">
@@ -141,7 +141,7 @@
             GitHub links will not resolve until the markdown source is available on the master branch.
             New pages would fail validation during development / PR test automation.
           -->
-          <a href="https://github.com/apache/beam/edit/master/website/src/documentation/patterns/file-processing-patterns.md" data-proofer-ignore>
+          <a href="https://github.com/apache/beam/edit/master/website/src/documentation/patterns/file-processing.md" data-proofer-ignore>
             <i class="far fa-edit fa-lg" alt="Edit on GitHub" title="Edit on GitHub"></i>
           </a>
         </li>
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/patterns/overview/index.html b/website/generated-content/documentation/patterns/overview/index.html
index c4d7a94..130d70b 100644
--- a/website/generated-content/documentation/patterns/overview/index.html
+++ b/website/generated-content/documentation/patterns/overview/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
@@ -475,23 +476,28 @@ limitations under the License.
 
 <p><strong>File processing patterns</strong> - Patterns for reading from and writing to files</p>
 <ul>
-  <li><a href="/documentation/patterns/file-processing-patterns/#processing-files-as-they-arrive">Processing files as they arrive</a></li>
-  <li><a href="/documentation/patterns/file-processing-patterns/#accessing-filenames">Accessing filenames</a></li>
+  <li><a href="/documentation/patterns/file-processing/#processing-files-as-they-arrive">Processing files as they arrive</a></li>
+  <li><a href="/documentation/patterns/file-processing/#accessing-filenames">Accessing filenames</a></li>
 </ul>
 
 <p><strong>Side input patterns</strong> - Patterns for processing supplementary data</p>
 <ul>
-  <li><a href="/documentation/patterns/side-input-patterns/#slowly-updating-global-window-side-inputs">Slowly updating global window side inputs</a></li>
+  <li><a href="/documentation/patterns/side-inputs/#slowly-updating-global-window-side-inputs">Slowly updating global window side inputs</a></li>
 </ul>
 
 <p><strong>Pipeline option patterns</strong> - Patterns for configuring pipelines</p>
 <ul>
-  <li><a href="/documentation/patterns/pipeline-option-patterns/#retroactively-logging-runtime-parameters">Retroactively logging runtime parameters</a></li>
+  <li><a href="/documentation/patterns/pipeline-options/#retroactively-logging-runtime-parameters">Retroactively logging runtime parameters</a></li>
 </ul>
 
-<p><strong>Custom I/O patterns</strong></p>
+<p><strong>Custom I/O patterns</strong> - Patterns for pipeline I/O</p>
 <ul>
-  <li><a href="/documentation/patterns/custom-io-patterns/#choosing-between-built-in-and-custom-connectors">Choosing between built-in and custom connectors</a></li>
+  <li><a href="/documentation/patterns/custom-io/#choosing-between-built-in-and-custom-connectors">Choosing between built-in and custom connectors</a></li>
+</ul>
+
+<p><strong>Custom window patterns</strong> - Patterns for windowing functions</p>
+<ul>
+  <li><a href="/documentation/patterns/custom-windows/#using-data-to-dynamically-set-session-window-gaps">Using data to dynamically set session window gaps</a></li>
 </ul>
 
 <h2 id="contributing-a-pattern">Contributing a pattern</h2>
diff --git a/website/generated-content/documentation/patterns/pipeline-option-patterns/index.html b/website/generated-content/documentation/patterns/pipeline-options/index.html
similarity index 98%
rename from website/generated-content/documentation/patterns/pipeline-option-patterns/index.html
rename to website/generated-content/documentation/patterns/pipeline-options/index.html
index c5af5c6..4d55cf2 100644
--- a/website/generated-content/documentation/patterns/pipeline-option-patterns/index.html
+++ b/website/generated-content/documentation/patterns/pipeline-options/index.html
@@ -39,7 +39,7 @@
   <script src="/js/fix-menu.js"></script>
   <script src="/js/section-nav.js"></script>
   <script src="/js/page-nav.js"></script>
-  <link rel="canonical" href="https://beam.apache.org/documentation/patterns/pipeline-option-patterns/" data-proofer-ignore>
+  <link rel="canonical" href="https://beam.apache.org/documentation/patterns/pipeline-options/" data-proofer-ignore>
   <link rel="shortcut icon" type="image/x-icon" href="/images/favicon.ico">
   <link rel="alternate" type="application/rss+xml" title="Apache Beam" href="https://beam.apache.org/feed.xml">
   <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.4.1/css/all.css" integrity="sha384-5sAR7xN1Nv6T6+dT2mhtzEpVJvfS3NScPQTrOxhwjIuvcA67KV2R5Jz6kr4abQsz" crossorigin="anonymous">
@@ -141,7 +141,7 @@
             GitHub links will not resolve until the markdown source is available on the master branch.
             New pages would fail validation during development / PR test automation.
           -->
-          <a href="https://github.com/apache/beam/edit/master/website/src/documentation/patterns/pipeline-option-patterns.md" data-proofer-ignore>
+          <a href="https://github.com/apache/beam/edit/master/website/src/documentation/patterns/pipeline-options.md" data-proofer-ignore>
             <i class="far fa-edit fa-lg" alt="Edit on GitHub" title="Edit on GitHub"></i>
           </a>
         </li>
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/patterns/side-input-patterns/index.html b/website/generated-content/documentation/patterns/side-inputs/index.html
similarity index 98%
rename from website/generated-content/documentation/patterns/side-input-patterns/index.html
rename to website/generated-content/documentation/patterns/side-inputs/index.html
index 3832956..f10c20f 100644
--- a/website/generated-content/documentation/patterns/side-input-patterns/index.html
+++ b/website/generated-content/documentation/patterns/side-inputs/index.html
@@ -39,7 +39,7 @@
   <script src="/js/fix-menu.js"></script>
   <script src="/js/section-nav.js"></script>
   <script src="/js/page-nav.js"></script>
-  <link rel="canonical" href="https://beam.apache.org/documentation/patterns/side-input-patterns/" data-proofer-ignore>
+  <link rel="canonical" href="https://beam.apache.org/documentation/patterns/side-inputs/" data-proofer-ignore>
   <link rel="shortcut icon" type="image/x-icon" href="/images/favicon.ico">
   <link rel="alternate" type="application/rss+xml" title="Apache Beam" href="https://beam.apache.org/feed.xml">
   <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.4.1/css/all.css" integrity="sha384-5sAR7xN1Nv6T6+dT2mhtzEpVJvfS3NScPQTrOxhwjIuvcA67KV2R5Jz6kr4abQsz" crossorigin="anonymous">
@@ -141,7 +141,7 @@
             GitHub links will not resolve until the markdown source is available on the master branch.
             New pages would fail validation during development / PR test automation.
           -->
-          <a href="https://github.com/apache/beam/edit/master/website/src/documentation/patterns/side-input-patterns.md" data-proofer-ignore>
+          <a href="https://github.com/apache/beam/edit/master/website/src/documentation/patterns/side-inputs.md" data-proofer-ignore>
             <i class="far fa-edit fa-lg" alt="Edit on GitHub" title="Edit on GitHub"></i>
           </a>
         </li>
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/pipelines/create-your-pipeline/index.html b/website/generated-content/documentation/pipelines/create-your-pipeline/index.html
index 86ad1ac..3a06e37 100644
--- a/website/generated-content/documentation/pipelines/create-your-pipeline/index.html
+++ b/website/generated-content/documentation/pipelines/create-your-pipeline/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/pipelines/design-your-pipeline/index.html b/website/generated-content/documentation/pipelines/design-your-pipeline/index.html
index 4dc5790..38b5c00 100644
--- a/website/generated-content/documentation/pipelines/design-your-pipeline/index.html
+++ b/website/generated-content/documentation/pipelines/design-your-pipeline/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/pipelines/test-your-pipeline/index.html b/website/generated-content/documentation/pipelines/test-your-pipeline/index.html
index 0612aed..3af7221 100644
--- a/website/generated-content/documentation/pipelines/test-your-pipeline/index.html
+++ b/website/generated-content/documentation/pipelines/test-your-pipeline/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/programming-guide/index.html b/website/generated-content/documentation/programming-guide/index.html
index e0dd36b..f775a5e 100644
--- a/website/generated-content/documentation/programming-guide/index.html
+++ b/website/generated-content/documentation/programming-guide/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/resources/learning-resources/index.html b/website/generated-content/documentation/resources/learning-resources/index.html
index 8cad36b..f1801ad 100644
--- a/website/generated-content/documentation/resources/learning-resources/index.html
+++ b/website/generated-content/documentation/resources/learning-resources/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/resources/videos-and-podcasts/index.html b/website/generated-content/documentation/resources/videos-and-podcasts/index.html
index af0f2be..fbc456e 100644
--- a/website/generated-content/documentation/resources/videos-and-podcasts/index.html
+++ b/website/generated-content/documentation/resources/videos-and-podcasts/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/runners/jstorm/index.html b/website/generated-content/documentation/runners/jstorm/index.html
index 0d9ab8d..63cef60 100644
--- a/website/generated-content/documentation/runners/jstorm/index.html
+++ b/website/generated-content/documentation/runners/jstorm/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/java/aggregation/approximatequantiles/index.html b/website/generated-content/documentation/transforms/java/aggregation/approximatequantiles/index.html
index 6405a5f..75d68ec 100644
--- a/website/generated-content/documentation/transforms/java/aggregation/approximatequantiles/index.html
+++ b/website/generated-content/documentation/transforms/java/aggregation/approximatequantiles/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/java/aggregation/approximateunique/index.html b/website/generated-content/documentation/transforms/java/aggregation/approximateunique/index.html
index d9d0beb..d4b56ea 100644
--- a/website/generated-content/documentation/transforms/java/aggregation/approximateunique/index.html
+++ b/website/generated-content/documentation/transforms/java/aggregation/approximateunique/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/java/aggregation/cogroupbykey/index.html b/website/generated-content/documentation/transforms/java/aggregation/cogroupbykey/index.html
index ee39d46..7b6a414 100644
--- a/website/generated-content/documentation/transforms/java/aggregation/cogroupbykey/index.html
+++ b/website/generated-content/documentation/transforms/java/aggregation/cogroupbykey/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/java/aggregation/combine/index.html b/website/generated-content/documentation/transforms/java/aggregation/combine/index.html
index f1df596..297e30a 100644
--- a/website/generated-content/documentation/transforms/java/aggregation/combine/index.html
+++ b/website/generated-content/documentation/transforms/java/aggregation/combine/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/java/aggregation/combinewithcontext/index.html b/website/generated-content/documentation/transforms/java/aggregation/combinewithcontext/index.html
index b616474..f295302 100644
--- a/website/generated-content/documentation/transforms/java/aggregation/combinewithcontext/index.html
+++ b/website/generated-content/documentation/transforms/java/aggregation/combinewithcontext/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/java/aggregation/count/index.html b/website/generated-content/documentation/transforms/java/aggregation/count/index.html
index f30bc49..842dce7 100644
--- a/website/generated-content/documentation/transforms/java/aggregation/count/index.html
+++ b/website/generated-content/documentation/transforms/java/aggregation/count/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/java/aggregation/distinct/index.html b/website/generated-content/documentation/transforms/java/aggregation/distinct/index.html
index a69109d..f652d2d 100644
--- a/website/generated-content/documentation/transforms/java/aggregation/distinct/index.html
+++ b/website/generated-content/documentation/transforms/java/aggregation/distinct/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/java/aggregation/groupbykey/index.html b/website/generated-content/documentation/transforms/java/aggregation/groupbykey/index.html
index 98d5346..b793383 100644
--- a/website/generated-content/documentation/transforms/java/aggregation/groupbykey/index.html
+++ b/website/generated-content/documentation/transforms/java/aggregation/groupbykey/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/java/aggregation/groupintobatches/index.html b/website/generated-content/documentation/transforms/java/aggregation/groupintobatches/index.html
index 2c62fc2..3438301 100644
--- a/website/generated-content/documentation/transforms/java/aggregation/groupintobatches/index.html
+++ b/website/generated-content/documentation/transforms/java/aggregation/groupintobatches/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/java/aggregation/latest/index.html b/website/generated-content/documentation/transforms/java/aggregation/latest/index.html
index 52a1dbc..56e202c 100644
--- a/website/generated-content/documentation/transforms/java/aggregation/latest/index.html
+++ b/website/generated-content/documentation/transforms/java/aggregation/latest/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/java/aggregation/max/index.html b/website/generated-content/documentation/transforms/java/aggregation/max/index.html
index 88ed91d..455365c 100644
--- a/website/generated-content/documentation/transforms/java/aggregation/max/index.html
+++ b/website/generated-content/documentation/transforms/java/aggregation/max/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/java/aggregation/mean/index.html b/website/generated-content/documentation/transforms/java/aggregation/mean/index.html
index 009e491..36d3fff 100644
--- a/website/generated-content/documentation/transforms/java/aggregation/mean/index.html
+++ b/website/generated-content/documentation/transforms/java/aggregation/mean/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/java/aggregation/min/index.html b/website/generated-content/documentation/transforms/java/aggregation/min/index.html
index 0eb191d..542f30a 100644
--- a/website/generated-content/documentation/transforms/java/aggregation/min/index.html
+++ b/website/generated-content/documentation/transforms/java/aggregation/min/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/java/aggregation/sample/index.html b/website/generated-content/documentation/transforms/java/aggregation/sample/index.html
index 28f87cf..124199a 100644
--- a/website/generated-content/documentation/transforms/java/aggregation/sample/index.html
+++ b/website/generated-content/documentation/transforms/java/aggregation/sample/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/java/aggregation/sum/index.html b/website/generated-content/documentation/transforms/java/aggregation/sum/index.html
index daece7f..6dffaaf 100644
--- a/website/generated-content/documentation/transforms/java/aggregation/sum/index.html
+++ b/website/generated-content/documentation/transforms/java/aggregation/sum/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/java/aggregation/top/index.html b/website/generated-content/documentation/transforms/java/aggregation/top/index.html
index 0ecaded..39e2c0c 100644
--- a/website/generated-content/documentation/transforms/java/aggregation/top/index.html
+++ b/website/generated-content/documentation/transforms/java/aggregation/top/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/java/elementwise/filter/index.html b/website/generated-content/documentation/transforms/java/elementwise/filter/index.html
index 9fbb36a..25da329 100644
--- a/website/generated-content/documentation/transforms/java/elementwise/filter/index.html
+++ b/website/generated-content/documentation/transforms/java/elementwise/filter/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/java/elementwise/flatmapelements/index.html b/website/generated-content/documentation/transforms/java/elementwise/flatmapelements/index.html
index 542baa2..6a99247 100644
--- a/website/generated-content/documentation/transforms/java/elementwise/flatmapelements/index.html
+++ b/website/generated-content/documentation/transforms/java/elementwise/flatmapelements/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/java/elementwise/keys/index.html b/website/generated-content/documentation/transforms/java/elementwise/keys/index.html
index 5402d9c..2e1db5b 100644
--- a/website/generated-content/documentation/transforms/java/elementwise/keys/index.html
+++ b/website/generated-content/documentation/transforms/java/elementwise/keys/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/java/elementwise/kvswap/index.html b/website/generated-content/documentation/transforms/java/elementwise/kvswap/index.html
index 64f10c9..ad6d6f6 100644
--- a/website/generated-content/documentation/transforms/java/elementwise/kvswap/index.html
+++ b/website/generated-content/documentation/transforms/java/elementwise/kvswap/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/java/elementwise/mapelements/index.html b/website/generated-content/documentation/transforms/java/elementwise/mapelements/index.html
index dc7fb61..f571de9 100644
--- a/website/generated-content/documentation/transforms/java/elementwise/mapelements/index.html
+++ b/website/generated-content/documentation/transforms/java/elementwise/mapelements/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/java/elementwise/pardo/index.html b/website/generated-content/documentation/transforms/java/elementwise/pardo/index.html
index 68ffecb..ca73a26 100644
--- a/website/generated-content/documentation/transforms/java/elementwise/pardo/index.html
+++ b/website/generated-content/documentation/transforms/java/elementwise/pardo/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/java/elementwise/partition/index.html b/website/generated-content/documentation/transforms/java/elementwise/partition/index.html
index 4c77cf2..fd15650 100644
--- a/website/generated-content/documentation/transforms/java/elementwise/partition/index.html
+++ b/website/generated-content/documentation/transforms/java/elementwise/partition/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/java/elementwise/regex/index.html b/website/generated-content/documentation/transforms/java/elementwise/regex/index.html
index 4d3b1a0..11ce423 100644
--- a/website/generated-content/documentation/transforms/java/elementwise/regex/index.html
+++ b/website/generated-content/documentation/transforms/java/elementwise/regex/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/java/elementwise/reify/index.html b/website/generated-content/documentation/transforms/java/elementwise/reify/index.html
index 0fe7d98..486d7c6 100644
--- a/website/generated-content/documentation/transforms/java/elementwise/reify/index.html
+++ b/website/generated-content/documentation/transforms/java/elementwise/reify/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/java/elementwise/tostring/index.html b/website/generated-content/documentation/transforms/java/elementwise/tostring/index.html
index 955ec7b..2effef1 100644
--- a/website/generated-content/documentation/transforms/java/elementwise/tostring/index.html
+++ b/website/generated-content/documentation/transforms/java/elementwise/tostring/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/java/elementwise/values/index.html b/website/generated-content/documentation/transforms/java/elementwise/values/index.html
index a6bc953..daf51a3 100644
--- a/website/generated-content/documentation/transforms/java/elementwise/values/index.html
+++ b/website/generated-content/documentation/transforms/java/elementwise/values/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/java/elementwise/withkeys/index.html b/website/generated-content/documentation/transforms/java/elementwise/withkeys/index.html
index a363ae4..208b9a1 100644
--- a/website/generated-content/documentation/transforms/java/elementwise/withkeys/index.html
+++ b/website/generated-content/documentation/transforms/java/elementwise/withkeys/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/java/elementwise/withtimestamps/index.html b/website/generated-content/documentation/transforms/java/elementwise/withtimestamps/index.html
index 35a686c..265aa88 100644
--- a/website/generated-content/documentation/transforms/java/elementwise/withtimestamps/index.html
+++ b/website/generated-content/documentation/transforms/java/elementwise/withtimestamps/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/java/other/create/index.html b/website/generated-content/documentation/transforms/java/other/create/index.html
index 6af03a2..815a093 100644
--- a/website/generated-content/documentation/transforms/java/other/create/index.html
+++ b/website/generated-content/documentation/transforms/java/other/create/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/java/other/flatten/index.html b/website/generated-content/documentation/transforms/java/other/flatten/index.html
index 1f91066..13f7aea 100644
--- a/website/generated-content/documentation/transforms/java/other/flatten/index.html
+++ b/website/generated-content/documentation/transforms/java/other/flatten/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/java/other/passert/index.html b/website/generated-content/documentation/transforms/java/other/passert/index.html
index d77db62..84d3973 100644
--- a/website/generated-content/documentation/transforms/java/other/passert/index.html
+++ b/website/generated-content/documentation/transforms/java/other/passert/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/java/other/view/index.html b/website/generated-content/documentation/transforms/java/other/view/index.html
index d381587..4b59dda 100644
--- a/website/generated-content/documentation/transforms/java/other/view/index.html
+++ b/website/generated-content/documentation/transforms/java/other/view/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/java/other/window/index.html b/website/generated-content/documentation/transforms/java/other/window/index.html
index ede04a0..92d4c64 100644
--- a/website/generated-content/documentation/transforms/java/other/window/index.html
+++ b/website/generated-content/documentation/transforms/java/other/window/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/java/overview/index.html b/website/generated-content/documentation/transforms/java/overview/index.html
index 515007d..95a815c 100644
--- a/website/generated-content/documentation/transforms/java/overview/index.html
+++ b/website/generated-content/documentation/transforms/java/overview/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/python/aggregation/approximatequantiles/index.html b/website/generated-content/documentation/transforms/python/aggregation/approximatequantiles/index.html
index 72b0005..6fb21b8 100644
--- a/website/generated-content/documentation/transforms/python/aggregation/approximatequantiles/index.html
+++ b/website/generated-content/documentation/transforms/python/aggregation/approximatequantiles/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/python/aggregation/approximateunique/index.html b/website/generated-content/documentation/transforms/python/aggregation/approximateunique/index.html
index a3c929e..9ee5019 100644
--- a/website/generated-content/documentation/transforms/python/aggregation/approximateunique/index.html
+++ b/website/generated-content/documentation/transforms/python/aggregation/approximateunique/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/python/aggregation/cogroupbykey/index.html b/website/generated-content/documentation/transforms/python/aggregation/cogroupbykey/index.html
index faf4bc0..9ae0656 100644
--- a/website/generated-content/documentation/transforms/python/aggregation/cogroupbykey/index.html
+++ b/website/generated-content/documentation/transforms/python/aggregation/cogroupbykey/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/python/aggregation/combineglobally/index.html b/website/generated-content/documentation/transforms/python/aggregation/combineglobally/index.html
index e1598b4..0d8c11a 100644
--- a/website/generated-content/documentation/transforms/python/aggregation/combineglobally/index.html
+++ b/website/generated-content/documentation/transforms/python/aggregation/combineglobally/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/python/aggregation/combinewithcontext/index.html b/website/generated-content/documentation/transforms/python/aggregation/combinewithcontext/index.html
index 16fab48..e180f15 100644
--- a/website/generated-content/documentation/transforms/python/aggregation/combinewithcontext/index.html
+++ b/website/generated-content/documentation/transforms/python/aggregation/combinewithcontext/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/python/aggregation/count/index.html b/website/generated-content/documentation/transforms/python/aggregation/count/index.html
index 1a29d1f..53db1dd 100644
--- a/website/generated-content/documentation/transforms/python/aggregation/count/index.html
+++ b/website/generated-content/documentation/transforms/python/aggregation/count/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/python/aggregation/distinct/index.html b/website/generated-content/documentation/transforms/python/aggregation/distinct/index.html
index 5aca45c..96c90fe 100644
--- a/website/generated-content/documentation/transforms/python/aggregation/distinct/index.html
+++ b/website/generated-content/documentation/transforms/python/aggregation/distinct/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/python/aggregation/groupbykey/index.html b/website/generated-content/documentation/transforms/python/aggregation/groupbykey/index.html
index b523346..38617de 100644
--- a/website/generated-content/documentation/transforms/python/aggregation/groupbykey/index.html
+++ b/website/generated-content/documentation/transforms/python/aggregation/groupbykey/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/python/aggregation/groupintobatches/index.html b/website/generated-content/documentation/transforms/python/aggregation/groupintobatches/index.html
index 49228d6..f77e11d 100644
--- a/website/generated-content/documentation/transforms/python/aggregation/groupintobatches/index.html
+++ b/website/generated-content/documentation/transforms/python/aggregation/groupintobatches/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/python/aggregation/latest/index.html b/website/generated-content/documentation/transforms/python/aggregation/latest/index.html
index 9085a0c..f7d30d0 100644
--- a/website/generated-content/documentation/transforms/python/aggregation/latest/index.html
+++ b/website/generated-content/documentation/transforms/python/aggregation/latest/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/python/aggregation/max/index.html b/website/generated-content/documentation/transforms/python/aggregation/max/index.html
index 1a90cb4..55f2707 100644
--- a/website/generated-content/documentation/transforms/python/aggregation/max/index.html
+++ b/website/generated-content/documentation/transforms/python/aggregation/max/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/python/aggregation/mean/index.html b/website/generated-content/documentation/transforms/python/aggregation/mean/index.html
index 17082f1..1842ec1 100644
--- a/website/generated-content/documentation/transforms/python/aggregation/mean/index.html
+++ b/website/generated-content/documentation/transforms/python/aggregation/mean/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/python/aggregation/min/index.html b/website/generated-content/documentation/transforms/python/aggregation/min/index.html
index 7d68871..dbc4415 100644
--- a/website/generated-content/documentation/transforms/python/aggregation/min/index.html
+++ b/website/generated-content/documentation/transforms/python/aggregation/min/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/python/aggregation/sample/index.html b/website/generated-content/documentation/transforms/python/aggregation/sample/index.html
index 74f29fe..8aa3abe 100644
--- a/website/generated-content/documentation/transforms/python/aggregation/sample/index.html
+++ b/website/generated-content/documentation/transforms/python/aggregation/sample/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/python/aggregation/sum/index.html b/website/generated-content/documentation/transforms/python/aggregation/sum/index.html
index 25df309..25f3534 100644
--- a/website/generated-content/documentation/transforms/python/aggregation/sum/index.html
+++ b/website/generated-content/documentation/transforms/python/aggregation/sum/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/python/aggregation/top/index.html b/website/generated-content/documentation/transforms/python/aggregation/top/index.html
index 46bb27e..fde64e2 100644
--- a/website/generated-content/documentation/transforms/python/aggregation/top/index.html
+++ b/website/generated-content/documentation/transforms/python/aggregation/top/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/python/elementwise/filter/index.html b/website/generated-content/documentation/transforms/python/elementwise/filter/index.html
index 00d256c..99ce805 100644
--- a/website/generated-content/documentation/transforms/python/elementwise/filter/index.html
+++ b/website/generated-content/documentation/transforms/python/elementwise/filter/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/python/elementwise/flatmap/index.html b/website/generated-content/documentation/transforms/python/elementwise/flatmap/index.html
index 304abf6..4c41194 100644
--- a/website/generated-content/documentation/transforms/python/elementwise/flatmap/index.html
+++ b/website/generated-content/documentation/transforms/python/elementwise/flatmap/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/python/elementwise/keys/index.html b/website/generated-content/documentation/transforms/python/elementwise/keys/index.html
index 3c4a834..37a45a7 100644
--- a/website/generated-content/documentation/transforms/python/elementwise/keys/index.html
+++ b/website/generated-content/documentation/transforms/python/elementwise/keys/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/python/elementwise/kvswap/index.html b/website/generated-content/documentation/transforms/python/elementwise/kvswap/index.html
index bd02cf1..0ad37bd 100644
--- a/website/generated-content/documentation/transforms/python/elementwise/kvswap/index.html
+++ b/website/generated-content/documentation/transforms/python/elementwise/kvswap/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/python/elementwise/map/index.html b/website/generated-content/documentation/transforms/python/elementwise/map/index.html
index 1628adb..a0fa286 100644
--- a/website/generated-content/documentation/transforms/python/elementwise/map/index.html
+++ b/website/generated-content/documentation/transforms/python/elementwise/map/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/python/elementwise/pardo/index.html b/website/generated-content/documentation/transforms/python/elementwise/pardo/index.html
index eb7ac6d..0047178 100644
--- a/website/generated-content/documentation/transforms/python/elementwise/pardo/index.html
+++ b/website/generated-content/documentation/transforms/python/elementwise/pardo/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/python/elementwise/partition/index.html b/website/generated-content/documentation/transforms/python/elementwise/partition/index.html
index 4c28ecb..af824b9 100644
--- a/website/generated-content/documentation/transforms/python/elementwise/partition/index.html
+++ b/website/generated-content/documentation/transforms/python/elementwise/partition/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/python/elementwise/regex/index.html b/website/generated-content/documentation/transforms/python/elementwise/regex/index.html
index f6e65a4..66e6932 100644
--- a/website/generated-content/documentation/transforms/python/elementwise/regex/index.html
+++ b/website/generated-content/documentation/transforms/python/elementwise/regex/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/python/elementwise/reify/index.html b/website/generated-content/documentation/transforms/python/elementwise/reify/index.html
index cca7bf1..b74e892 100644
--- a/website/generated-content/documentation/transforms/python/elementwise/reify/index.html
+++ b/website/generated-content/documentation/transforms/python/elementwise/reify/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/python/elementwise/tostring/index.html b/website/generated-content/documentation/transforms/python/elementwise/tostring/index.html
index 9eb696d..d371c06 100644
--- a/website/generated-content/documentation/transforms/python/elementwise/tostring/index.html
+++ b/website/generated-content/documentation/transforms/python/elementwise/tostring/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/python/elementwise/values/index.html b/website/generated-content/documentation/transforms/python/elementwise/values/index.html
index c2b989a..0439e95 100644
--- a/website/generated-content/documentation/transforms/python/elementwise/values/index.html
+++ b/website/generated-content/documentation/transforms/python/elementwise/values/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/python/elementwise/withkeys/index.html b/website/generated-content/documentation/transforms/python/elementwise/withkeys/index.html
index 07b4dc7..c2a5067 100644
--- a/website/generated-content/documentation/transforms/python/elementwise/withkeys/index.html
+++ b/website/generated-content/documentation/transforms/python/elementwise/withkeys/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/python/elementwise/withtimestamps/index.html b/website/generated-content/documentation/transforms/python/elementwise/withtimestamps/index.html
index 1c2c1dc..5c53875 100644
--- a/website/generated-content/documentation/transforms/python/elementwise/withtimestamps/index.html
+++ b/website/generated-content/documentation/transforms/python/elementwise/withtimestamps/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/python/other/create/index.html b/website/generated-content/documentation/transforms/python/other/create/index.html
index 00a00f7..1cfd0b0 100644
--- a/website/generated-content/documentation/transforms/python/other/create/index.html
+++ b/website/generated-content/documentation/transforms/python/other/create/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/python/other/flatten/index.html b/website/generated-content/documentation/transforms/python/other/flatten/index.html
index 9e7261e..d7ce49d 100644
--- a/website/generated-content/documentation/transforms/python/other/flatten/index.html
+++ b/website/generated-content/documentation/transforms/python/other/flatten/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/python/other/passert/index.html b/website/generated-content/documentation/transforms/python/other/passert/index.html
index 21a9b5f..8aa74fd 100644
--- a/website/generated-content/documentation/transforms/python/other/passert/index.html
+++ b/website/generated-content/documentation/transforms/python/other/passert/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/python/other/reshuffle/index.html b/website/generated-content/documentation/transforms/python/other/reshuffle/index.html
index 4f9c422..8a064e8 100644
--- a/website/generated-content/documentation/transforms/python/other/reshuffle/index.html
+++ b/website/generated-content/documentation/transforms/python/other/reshuffle/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/python/other/view/index.html b/website/generated-content/documentation/transforms/python/other/view/index.html
index 76b3f09..f86b01f 100644
--- a/website/generated-content/documentation/transforms/python/other/view/index.html
+++ b/website/generated-content/documentation/transforms/python/other/view/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/python/other/windowinto/index.html b/website/generated-content/documentation/transforms/python/other/windowinto/index.html
index 744d645..d1a0eca 100644
--- a/website/generated-content/documentation/transforms/python/other/windowinto/index.html
+++ b/website/generated-content/documentation/transforms/python/other/windowinto/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/documentation/transforms/python/overview/index.html b/website/generated-content/documentation/transforms/python/overview/index.html
index eaaedf4..743c762 100644
--- a/website/generated-content/documentation/transforms/python/overview/index.html
+++ b/website/generated-content/documentation/transforms/python/overview/index.html
@@ -403,10 +403,11 @@
 
   <ul class="section-nav-list">
     <li><a href="/documentation/patterns/overview/">Overview</a></li>
-    <li><a href="/documentation/patterns/file-processing-patterns/">File processing patterns</a></li>
-    <li><a href="/documentation/patterns/side-input-patterns/">Side input patterns</a></li>
-    <li><a href="/documentation/patterns/pipeline-option-patterns/">Pipeline option patterns</a></li>
-    <li><a href="/documentation/patterns/custom-io-patterns/">Custom I/O patterns</a></li>
+    <li><a href="/documentation/patterns/file-processing/">File processing</a></li>
+    <li><a href="/documentation/patterns/side-inputs/">Side inputs</a></li>
+    <li><a href="/documentation/patterns/pipeline-options/">Pipeline options</a></li>
+    <li><a href="/documentation/patterns/custom-io/">Custom I/O</a></li>
+    <li><a href="/documentation/patterns/custom-windows/">Custom windows</a></li>
   </ul>
 </li>
 
diff --git a/website/generated-content/images/standard-vs-dynamic-sessions.png b/website/generated-content/images/standard-vs-dynamic-sessions.png
new file mode 100644
index 0000000..832a181
Binary files /dev/null and b/website/generated-content/images/standard-vs-dynamic-sessions.png differ