Repository: nifi Updated Branches: refs/heads/master db966cf34 -> fdb1fd1a6
NIFI-5766 Make formatting in User Guide consistent with Admin Guide This closes #3115 Signed-off-by: Scott Aslan <scottyas...@gmail.com> Project: http://git-wip-us.apache.org/repos/asf/nifi/repo Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/fdb1fd1a Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/fdb1fd1a Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/fdb1fd1a Branch: refs/heads/master Commit: fdb1fd1a64d85caefb6be328d1e169c57b5a9777 Parents: db966cf Author: Andrew Lim <andrewlim.apa...@gmail.com> Authored: Tue Oct 30 11:46:32 2018 -0400 Committer: Scott Aslan <scottyas...@gmail.com> Committed: Tue Oct 30 12:04:29 2018 -0400 ---------------------------------------------------------------------- .../src/main/asciidoc/images/iconDetails.png | Bin 362 -> 704 bytes .../asciidoc/images/iconDownloadTemplate.png | Bin 0 -> 929 bytes nifi-docs/src/main/asciidoc/user-guide.adoc | 117 +++++++++---------- 3 files changed, 57 insertions(+), 60 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/nifi/blob/fdb1fd1a/nifi-docs/src/main/asciidoc/images/iconDetails.png ---------------------------------------------------------------------- diff --git a/nifi-docs/src/main/asciidoc/images/iconDetails.png b/nifi-docs/src/main/asciidoc/images/iconDetails.png index f4fb4d4..28166de 100644 Binary files a/nifi-docs/src/main/asciidoc/images/iconDetails.png and b/nifi-docs/src/main/asciidoc/images/iconDetails.png differ http://git-wip-us.apache.org/repos/asf/nifi/blob/fdb1fd1a/nifi-docs/src/main/asciidoc/images/iconDownloadTemplate.png ---------------------------------------------------------------------- diff --git a/nifi-docs/src/main/asciidoc/images/iconDownloadTemplate.png b/nifi-docs/src/main/asciidoc/images/iconDownloadTemplate.png new file mode 100644 index 0000000..1bfc1cf Binary files /dev/null and b/nifi-docs/src/main/asciidoc/images/iconDownloadTemplate.png differ http://git-wip-us.apache.org/repos/asf/nifi/blob/fdb1fd1a/nifi-docs/src/main/asciidoc/user-guide.adoc ---------------------------------------------------------------------- diff --git a/nifi-docs/src/main/asciidoc/user-guide.adoc b/nifi-docs/src/main/asciidoc/user-guide.adoc index 09e22b9..c69b771 100644 --- a/nifi-docs/src/main/asciidoc/user-guide.adoc +++ b/nifi-docs/src/main/asciidoc/user-guide.adoc @@ -119,13 +119,13 @@ UI may become unavailable. As a result, several components may be combined together to make a larger building block from which to create a dataflow. These templates can also be exported as XML and imported into another NiFi instance, allowing these building blocks to be shared. -*flow.xml.gz*: Everything the DFM puts onto the NiFi User Interface canvas is written, in real time, to one file called the flow.xml.gz. This file is located in the nifi/conf directory by default. - Any change made on the canvas is automatically saved to this file, without the user needing to click a "save" button. +*flow.xml.gz*: Everything the DFM puts onto the NiFi User Interface canvas is written, in real time, to one file called the _flow.xml.gz_. This file is located in the `nifi/conf` directory by default. + Any change made on the canvas is automatically saved to this file, without the user needing to click a "Save" button. In addition, NiFi automatically creates a backup copy of this file in the archive directory when it is updated. - You can use these archived files to rollback flow configuration. To do so, stop NiFi, replace flow.xml.gz with a desired backup copy, then restart NiFi. - In a clustered environment, stop the entire NiFi cluster, replace the flow.xml.gz of one of nodes, and restart the node. Remove flow.xml.gz from other nodes. + You can use these archived files to rollback flow configuration. To do so, stop NiFi, replace _flow.xml.gz_ with a desired backup copy, then restart NiFi. + In a clustered environment, stop the entire NiFi cluster, replace the _flow.xml.gz_ of one of nodes, and restart the node. Remove _flow.xml.gz_ from other nodes. Once you confirmed the node starts up as a one-node cluster, start the other nodes. The replaced flow configuration will be synchronized across the cluster. - The name and location of flow.xml.gz, and auto archive behavior are configurable. See the link:administration-guide.html#core-properties-br[System Administratorâs Guide] for further details. + The name and location of _flow.xml.gz_, and auto archive behavior are configurable. See the link:administration-guide.html#core-properties-br[System Administratorâs Guide] for further details. @@ -441,7 +441,7 @@ image:iconLabel.png["Label"] *Label*: Labels are used to provide documentation to parts of a dataflow. When a Label is dropped onto the canvas, it is created with a default size. The Label can then be resized by dragging the handle in the bottom-right corner. The Label has no text when initially created. The text of the Label can be added by right-clicking on the Label and -choosing `Configure` +choosing `Configure`. [[component-versioning]] @@ -540,17 +540,17 @@ data may be processable at a later time. When this occurs, the Processor may cho prevent the FlowFile from being Processed for some period of time. For example, if the Processor is to push the data to a remote service, but the remote service already has a file with the same name as the filename that the Processor is specifying, the Processor may penalize the FlowFile. The 'Penalty Duration' allows the DFM to specify how long the -FlowFile should be penalized. The default value is 30 seconds. +FlowFile should be penalized. The default value is `30 seconds`. Similarly, the Processor may determine that some situation exists such that the Processor can no longer make any progress, regardless of the data that it is processing. For example, if a Processor is to push data to a remote service and that service is not responding, the Processor cannot make any progress. As a result, the Processor should 'yield', which will prevent the Processor from being scheduled to run for some period of time. That period of time is specified by setting -the 'Yield Duration'. The default value is 1 second. +the 'Yield Duration'. The default value is `1 second`. The last configurable option on the left-hand side of the Settings tab is the Bulletin level. Whenever the Processor writes to its log, the Processor also will generate a Bulletin. This setting indicates the lowest level of Bulletin that should be -shown in the User Interface. By default, the Bulletin level is set to WARN, which means it will display all warning and error-level +shown in the User Interface. By default, the Bulletin level is set to `WARN`, which means it will display all warning and error-level bulletins. The right-hand side of the Settings tab contains an 'Automatically Terminate Relationships' section. Each of the Relationships that is @@ -748,7 +748,7 @@ so that it is not overridden by existing environment properties, system properti There are two ways to use and manage custom properties: * In the NiFi UI via the Variables window -* Referencing custom properties via 'nifi.properties' +* Referencing custom properties via _nifi.properties_ [[Variables_Window]] ==== Variables Window @@ -769,7 +769,7 @@ image::variables-context_menu-pg.png["Variables in Context Menu for PG"] ===== Creating a Variable -In the Variables window, click the "+" button to create a new variable. Add a name: +In the Variables window, click the `+` button to create a new variable. Add a name: image::variable-name.png["Variable Name Creation"] @@ -839,7 +839,7 @@ image::variable-unauthorized-ref-processor-canvas.png["Unauthorized Referencing Identify one or more sets of key/value pairs, and give them to your system administrator. Once the new custom properties have been added, ensure that the `nifi.variable.registry.properties` -field in the 'nifi.properties' file is updated with the custom properties location. +field in the _nifi.properties_ file is updated with the custom properties location. NOTE: NiFi must be restarted for these updates to be picked up. @@ -865,7 +865,7 @@ This displays the NiFi Settings window. The window has four tabs: General, Repor image:settings-general-tab.png["Controller Settings General Tab"] -To the right of the General tab is the Reporting Task Controller Services tab. From this tab, the DFM may click the "+" button in the upper-right corner to create a new Controller Service. +To the right of the General tab is the Reporting Task Controller Services tab. From this tab, the DFM may click the `+` button in the upper-right corner to create a new Controller Service. image:controller-services-tab.png["Controller Services Tab"] @@ -873,16 +873,16 @@ The Add Controller Service window opens. This window is similar to the Add Proce image:add-controller-service-window.png["Add Controller Service Window"] -Once you have added a Controller Service, you can configure it by clicking the Configure button in the -far-right column. Other buttons in this column include Enable, Remove and Access Policies. +Once you have added a Controller Service, you can configure it by clicking the `Configure` button in the +far-right column. Other buttons in this column include `Enable`, `Remove` and `Access Policies`. image:controller-services-configure-buttons.png["Controller Services Buttons"] -You can obtain information about Controller Services by clicking the Usage and Alerts buttons in the left-hand column. +You can obtain information about Controller Services by clicking the `Usage` and `Alerts` buttons in the left-hand column. image:controller-services-info-buttons.png["Controller Services Information Buttons"] -When the DFM clicks the Configure button, a Configure Controller Service window opens. It has three tabs: Settings, Properties,and Comments. This window is similar to the Configure Processor window. The Settings tab provides a place for the DFM to give the Controller Service a unique name (if desired). It also lists the UUID, Type, Bundle and Support information for the service and provides a list of other components (reporting tasks or other controller services) that reference the service. +When the DFM clicks the `Configure` button, a Configure Controller Service window opens. It has three tabs: Settings, Properties,and Comments. This window is similar to the Configure Processor window. The Settings tab provides a place for the DFM to give the Controller Service a unique name (if desired). It also lists the UUID, Type, Bundle and Support information for the service and provides a list of other components (reporting tasks or other controller services) that reference the service. image:configure-controller-service-settings.png["Configure Controller Service Settings"] @@ -890,7 +890,7 @@ The Properties tab lists the various properties that apply to the particular con image:configure-controller-service-properties.png["Configure Controller Service Properties"] -The Comments tab is just an open-text field, where the DFM may include comments about the service. After configuring a Controller Service, click the Apply button to apply the configuration and close the window, or click the Cancel button to cancel the changes and close the window. +The Comments tab is just an open-text field, where the DFM may include comments about the service. After configuring a Controller Service, click the `Apply` button to apply the configuration and close the window, or click the `Cancel` button to cancel the changes and close the window. [[Controller_Services_for_Dataflows]] @@ -910,7 +910,7 @@ Use the following steps to add a Controller Service: + image::process-group-configuration-window.png["Process Group Configuration Window"] 2. From the Process Group Configuration page, select the Controller Services tab. -3. Click the "+" button to display the Add Controller Service dialog. +3. Click the `+` button to display the Add Controller Service dialog. 4. Select the Controller Service desired, and click Add. 5. Perform any necessary Controller Service configuration tasks by clicking the Configure icon (image:iconConfigure.png["Configure"]) in the right-hand column. @@ -918,7 +918,7 @@ image::process-group-configuration-window.png["Process Group Configuration Windo [[Enabling_Disabling_Controller_Services]] ==== Enabling/Disabling Controller Services -After a Controller Service has been configured, it must be enabled in order to run. Do this using the Enable button (image:iconEnable.png["Enable Button"]) in the far-right column of the Controller Services tab. In order to modify an existing/running controller service, the DFM needs to stop/disable it (as well as all referencing reporting tasks and controller services). Do this using the Disable button (image:iconDisable.png["Disable Button"]). Rather than having to hunt down each component that is referenced by that controller service, the DFM has the ability to stop/disable them when disabling the controller service in question. When enabling a controller service, the DFM has the option to either start/enable the controller service and all referencing components or start/enable only the controller service itself. +After a Controller Service has been configured, it must be enabled in order to run. Do this using the `Enable` button (image:iconEnable.png["Enable Button"]) in the far-right column of the Controller Services tab. In order to modify an existing/running controller service, the DFM needs to stop/disable it (as well as all referencing reporting tasks and controller services). Do this using the `Disable` button (image:iconDisable.png["Disable Button"]). Rather than having to hunt down each component that is referenced by that controller service, the DFM has the ability to stop/disable them when disabling the controller service in question. When enabling a controller service, the DFM has the option to either start/enable the controller service and all referencing components or start/enable only the controller service itself. image:enable-controller-service-scope.png["Enable Controller Service Scope"] @@ -929,7 +929,7 @@ Reporting Tasks run in the background to provide statistical reports about what image:controller-settings-selection.png["Global Menu - Controller Settings"] -This displays the NiFi Settings window. Select the Reporting Tasks tab and click the "+" button in the upper-right corner to create a new Reporting Task. +This displays the NiFi Settings window. Select the Reporting Tasks tab and click the `+` button in the upper-right corner to create a new Reporting Task. image:reporting-tasks-tab.png["Reporting Tasks Tab"] @@ -937,15 +937,15 @@ The Add Reporting Task window opens. This window is similar to the Add Processor image:add-reporting-task-window.png["Add Reporting Task Window"] -Once a Reporting Task has been added, the DFM may configure it by clicking the Edit button in the far-right column. Other buttons in this column include Start, Remove, State and Access Policies. +Once a Reporting Task has been added, the DFM may configure it by clicking the `Edit` button in the far-right column. Other buttons in this column include `Start`, `Remove`, `State` and `Access Policies`. image:reporting-tasks-edit-buttons.png["Reporting Tasks Edit Buttons"] -You can obtain information about Reporting Tasks by clicking the View Details, Usage, and Alerts buttons in the left-hand column. +You can obtain information about Reporting Tasks by clicking the `View Details`, `Usage`, and `Alerts` buttons in the left-hand column. image:reporting-tasks-info-buttons.png["Reporting Tasks Information Buttons"] -When the DFM clicks the Edit button, a Configure Reporting Task window opens. It has three tabs: Settings, Properties, and Comments. This window is similar to the Configure Processor window. The Settings tab provides a place for the DFM to give the Reporting Task a unique name (if desired). It also lists the UUID, Type, and Bundle information for the task and provides settings for the task's Scheduling Strategy and Run Schedule (similar to the same settings in a processor). The DFM may hover the mouse over the question mark icons to see more information about each setting. +When the DFM clicks the `Edit` button, a Configure Reporting Task window opens. It has three tabs: Settings, Properties, and Comments. This window is similar to the Configure Processor window. The Settings tab provides a place for the DFM to give the Reporting Task a unique name (if desired). It also lists the UUID, Type, and Bundle information for the task and provides settings for the task's Scheduling Strategy and Run Schedule (similar to the same settings in a processor). The DFM may hover the mouse over the question mark icons to see more information about each setting. image:configure-reporting-task-settings.png["Configure Reporting Task Settings"] @@ -953,9 +953,9 @@ The Properties tab lists the various properties that may be configured for the t image:configure-reporting-task-properties.png["Configure Reporting Task Properties"] -The Comments tab is just an open-text field, where the DFM may include comments about the task. After configuring the Reporting Task, click the Apply button to apply the configuration and close the window, or click the Cancel button to cancel the changes and close the window. +The Comments tab is just an open-text field, where the DFM may include comments about the task. After configuring the Reporting Task, click the `Apply` button to apply the configuration and close the window, or click the `Cancel` button to cancel the changes and close the window. -When you want to run the Reporting Task, click the Start button (image:iconStart.png["Start Button"]). +When you want to run the Reporting Task, click the `Start` button (image:iconStart.png["Start Button"]). [[Connecting_Components]] @@ -1015,8 +1015,8 @@ is the "Back pressure data size threshold." This specifies the maximum amount of applying back pressure. This value is configured by entering a number followed by a data size (`B` for bytes, `KB` for kilobytes, `MB` for megabytes, `GB` for gigabytes, or `TB` for terabytes). -NOTE: By default each new connection added will have a default Back Pressure Object Threshold of 10,000 objects and Back Pressure Data Size Threshold of 1 GB. -These defaults can be changed by modifying the appropriate properties in the `nifi.properties` file. +NOTE: By default each new connection added will have a default Back Pressure Object Threshold of `10,000 objects` and Back Pressure Data Size Threshold of `1 GB`. +These defaults can be changed by modifying the appropriate properties in the _nifi.properties_ file. When back pressure is enabled, small progress bars appear on the connection label, so the DFM can see it at-a-glance when looking at a flow on the canvas. The progress bars change color based on the queue percentage: Green (0-60%), Yellow (61-85%) and Red (86-100%). @@ -1260,7 +1260,7 @@ After you drag the GenerateFlowFile and LogAttribute processors to the canvas an * Generate FlowFile ** On the Scheduling tab, set Run schedule to: 5 sec. Note that the GenerateFlowFile processor can create many FlowFiles very quickly; that's why setting the Run schedule is important so that this flow does not overwhelm the system NiFi is running on. -** On the Properties tab, set File Size to: 10 kb +** On the Properties tab, set File Size to: 10 KB * Log Attribute ** On the Settings tab, under Auto-terminate relationships, select the checkbox next to Success. This will terminate FlowFiles after this processor has successfully processed them. @@ -1296,7 +1296,7 @@ In order to start a component, the following conditions must be met: - The component must have no active tasks. For more information about active tasks, see the "Anatomy of ..." sections under <<monitoring>> (<<processor_anatomy>>, <<process_group_anatomy>>, <<remote_group_anatomy>>). -Components can be started by selecting all of the components to start and then clicking the Start button ( +Components can be started by selecting all of the components to start and then clicking the `Start` button ( image:buttonStart.png["Start"] ) in the Operate Palette or by right-clicking a single component and choosing Start from the context menu. @@ -1312,7 +1312,7 @@ image:iconRun.png["Run"] === Stopping a Component A component can be stopped any time that it is running. A component is stopped by right-clicking on the component -and clicking Stop from the context menu, or by selecting the component and clicking the Stop button ( +and clicking Stop from the context menu, or by selecting the component and clicking the `Stop` button ( image:buttonStop.png["Stop"] ) in the Operate Palette. @@ -1336,7 +1336,7 @@ intentionally not running and those that may have been stopped temporarily (for configuration) and inadvertently were never restarted. When it is desirable to re-enable a component, it can be enabled by selecting the component and -clicking the Enable button ( +clicking the `Enable` button ( image:buttonEnable.png["Enable"] ) in the Operate Palette. This is available only when the selected component or components are disabled. Alternatively, a component can be enabled by checking the checkbox next to the "Enabled" option in @@ -1348,7 +1348,7 @@ image:iconAlert.png["Invalid"] image:iconStop.png["Stopped"] ), depending on whether or not the component is valid. -A component is then disabled by selecting the component and clicking the Disable button ( +A component is then disabled by selecting the component and clicking the `Disable` button ( image:buttonDisable.png["Disable"] ) in the Operate Palette, or by clearing the checkbox next to the "Enabled" option in the Settings tab of the Processor configuration dialog or the configuration dialog for a Port. @@ -1697,10 +1697,8 @@ The FlowFiles enqueued in a Connection can be viewed when necessary. The Queue l a Connection's context menu. The listing will return the top 100 FlowFiles in the active queue according to the configured priority. The listing can be performed even if the source and destination are actively running. -Additionally, details for a Flowfile in the listing can be viewed by clicking on the Details icon ( -image:iconDetails.png["Details"] -) in the left most column. From here, the FlowFile details and attributes are available as well buttons for -downloading or viewing the content. Viewing the content is only available if the nifi.content.viewer.url has been configured. +Additionally, details for a Flowfile in the listing can be viewed by clicking the `Details` button (image:iconDetails.png["Details"]) in the left most column. From here, the FlowFile details and attributes are available as well as buttons for +downloading or viewing the content. Viewing the content is only available if the `nifi.content.viewer.url` has been configured. If the source or destination of the Connection are actively running, there is a chance that the desired FlowFile will no longer be in the active queue. @@ -1750,8 +1748,8 @@ The Summary page also includes the following elements: - *Status History*: Clicking the Status History icon will open a new dialog that shows a historical view of the statistics that are rendered for this component. See the section <<Status_History>> for more information. -- *Refresh*: The Refresh button allows the user to refresh the information displayed without closing the dialog and opening it - again. The time at which the information was last refreshed is shown just to the right of the Refresh button. The information +- *Refresh*: The `Refresh` button allows the user to refresh the information displayed without closing the dialog and opening it + again. The time at which the information was last refreshed is shown just to the right of the `Refresh` button. The information on the page is not automatically refreshed. - *Filter*: The Filter element allows users to filter the contents of the Summary table by typing in all or part of some criteria, @@ -1762,9 +1760,9 @@ The Summary page also includes the following elements: entries exist in the table. - *Pop-Out*: When monitoring a flow, it is helpful to be able to open the Summary table in a separate browser tab or window. The - Pop-Out button, next to the Close button, will cause the entire Summary dialog to be opened in a new browser tab or window + "Pop Out" button, next to the `Close` button, will cause the entire Summary dialog to be opened in a new browser tab or window (depending on the configuration of the browser). Once the page is "popped out", the dialog is closed in the original - browser tab/window. In the new tab/window, the Pop-Out button and the Go-To button will no longer be available. + browser tab/window. In the new tab/window, the "Pop Out" button and the "Go To" button will no longer be available. - *System Diagnostics*: The System Diagnostics window provides information about how the system is performing with respect to system resource utilization. While this is intended mostly for administrators, it is provided in this view because it @@ -1782,7 +1780,7 @@ past five minutes, it is often useful to have a view of historical statistics as by right-clicking on a component and choosing the "Status History" menu option or by clicking on the Status History in the Summary page (see <<Summary_Page>> for more information). -The amount of historical information that is stored is configurable in the NiFi properties but defaults to 24 hours. For specific +The amount of historical information that is stored is configurable in the NiFi properties but defaults to `24 hours`. For specific configuration information reference the Component Status Repository of the link:administration-guide.html[System Administratorâs Guide]. When the Status History dialog is opened, it provides a graph of historical statistics: @@ -1834,7 +1832,7 @@ To connect NiFi to a Registry, select Controller Settings from the Global Menu. image::controller-settings-selection.png["Global Menu - Controller Settings"] -This displays the NiFi Settings window. Select the Registry Clients tab and click the "+" button in the upper-right corner to register a new Registry client. +This displays the NiFi Settings window. Select the Registry Clients tab and click the `+` button in the upper-right corner to register a new Registry client. image::registry-clients-tab.png["Registry Clients Tab"] @@ -2146,7 +2144,7 @@ received from others can then be imported into an instance of NiFi and dragged o [[Create_Template]] === Creating a Template To create a Template, select the components that are to be a part of the template, and then click the -"Create Template" ( +`Create Template` ( image:iconNewTemplate.png["Create Template"] ) button in the Operate Palette (See <<User_Interface>> for more information on the Operate Palette). @@ -2155,7 +2153,7 @@ current Process Group. This means that creating a Template with nothing selected will create a single Template that contains the entire flow. After clicking this button, the user is prompted to provide a name and an optional description for the template. -Each template must have a unique name. After entering the name and optional description, clicking the Create button +Each template must have a unique name. After entering the name and optional description, clicking the `Create` button will generate the template and notify the user that the template was successfully created, or provide an appropriate error message if unable to create the template for some reason. @@ -2171,12 +2169,12 @@ After receiving a Template that has been exported from another NiFi, the first s the template into this instance of NiFi. You may import templates into any Process Group where you have the appropriate authorization. -From the Operate Palette, click the "Upload Template" ( +From the Operate Palette, click the `Upload Template` ( image:iconUploadTemplate.png["Upload Template"] ) button (see <<User_Interface>> for more information on the Operate Palette). This will display the Upload Template dialog. Click the find icon and use the File Selection dialog to choose which template file to upload. Select the file and click Open. -Clicking the "Upload" button will attempt to import the Template into this instance of NiFi. +Clicking the `Upload` button will attempt to import the Template into this instance of NiFi. The Upload Template dialog will update to show "Success" or an error message if there was a problem importing the template. @@ -2188,7 +2186,7 @@ image:iconTemplate.png["Template"] ) from the Components Toolbar (see <<User_Interface>>) onto the canvas. This will present a dialog to choose which Template to add to the canvas. After choosing the Template to add, simply -click the "Add" button. The Template will be added to the canvas with the upper-left-hand side of the Template +click the `Add` button. The Template will be added to the canvas with the upper-left-hand side of the Template being placed wherever the user dropped the Template icon. This leaves the contents of the newly instantiated Template selected. If there was a mistake, and this Template is no @@ -2209,8 +2207,8 @@ filter the templates to see only those of interest, export, and delete Templates ==== Exporting a Template Once a Template has been created, it can be shared with others in the Template Management page. To export a Template, locate the Template in the table. The Filter in the top-right corner -can be used to help find the appropriate Template if several are available. Then click the Export or Download button ( -image:iconExport.png["Export"] +can be used to help find the appropriate Template if several are available. Then click the `Download` button ( +image:iconDownloadTemplate.png["Export"] ). This will download the template as an XML file to your computer. This XML file can then be sent to others and imported into other instances of NiFi (see <<Import_Template>>). @@ -2218,7 +2216,7 @@ into other instances of NiFi (see <<Import_Template>>). ==== Removing a Template Once it is decided that a Template is no longer needed, it can be easily removed from the Template Management page. To delete a Template, locate it in the table (the Filter in the top-right corner -may be used to find the appropriate Template if several are available) and click the Delete button ( +may be used to find the appropriate Template if several are available) and click the `Delete` button ( image:iconDelete.png["Delete"] ). This will prompt for confirmation. After confirming the deletion, the Template will be removed from this table and will no longer be available to add to the canvas. @@ -2232,8 +2230,7 @@ like dataflow compliance and optimization in real time. By default, NiFi updates is configurable. -To access the Data Provenance page, select Data Provenance from the Global Menu. Clicking this button opens a dialog window t -hat allows the user to see the most recent Data Provenance information available, +To access the Data Provenance page, select "Data Provenance" from the Global Menu. This opens a dialog window that allows the user to see the most recent Data Provenance information available, search the information for specific items, and filter the search results. It is also possible to open additional dialog windows to see event details, replay data at any point within the dataflow, and see a graphical representation of the data's lineage, or path through the flow. (These features are described in depth below.) @@ -2291,7 +2288,7 @@ image:search-receive-event-abc.png["Search for RECEIVE Event"] [[event_details]] === Details of an Event -In the far-left column of the Data Provenance page, there is a View Details icon for each event (image:iconDetails.png["Details"]). +In the far-left column of the Data Provenance page, there is a `View Details` icon for each event (image:iconDetails.png["Details"]). Clicking this button opens a dialog window with three tabs: Details, Attributes, and Content. image:event-details.png["Event Details", width=700] @@ -2350,7 +2347,7 @@ image:expanded-events.png["Expanded Events"] [[writeahead-provenance]] === Write Ahead Provenance Repository -By default, the Provenance Repository is implemented in a Persistent Provenance configuration. In Apache NiFi 1.2.0, the Write Ahead configuration was introduced to provide the same capabilities as Persistent Provenance, but with far better performance. Migrating to the Write Ahead configuration is easy to accomplish. Simply change the setting for the `nifi.provenance.repository.implementation` system property in the `nifi.properties` file from the default value of `org.apache.nifi.provenance.PersistentProvenanceRepository` to `org.apache.nifi.provenance.WriteAheadProvenanceRepository` and restart NiFi. +By default, the Provenance Repository is implemented in a Persistent Provenance configuration. In Apache NiFi 1.2.0, the Write Ahead configuration was introduced to provide the same capabilities as Persistent Provenance, but with far better performance. Migrating to the Write Ahead configuration is easy to accomplish. Simply change the setting for the `nifi.provenance.repository.implementation` system property in the _nifi.properties_ file from the default value of `org.apache.nifi.provenance.PersistentProvenanceRepository` to `org.apache.nifi.provenance.WriteAheadProvenanceRepository` and restart NiFi. However, to increase the chances of a successful migration consider the following factors and recommended actions. @@ -2362,7 +2359,7 @@ The `WriteAheadProvenanceRepository` can use the Provenance data stored by the ` If you are upgrading from an older version of NiFi to 1.2.0 or later, it is recommended that you do not change the provenance configuration to Write Ahead until you confirm your flows and environment are stable in 1.2.0 first. This reduces the number of variables in your upgrade and can simplify the debugging process if any issues arise. ==== Bootstrap.conf -While better performance is achieved with the G1 garbage collector, Java 8 bugs may surface more frequently in the Write Ahead configuration. It is recommended that the following line is commented out in the `bootstrap.conf` file in the `conf` directory: +While better performance is achieved with the G1 garbage collector, Java 8 bugs may surface more frequently in the Write Ahead configuration. It is recommended that the following line is commented out in the _bootstrap.conf_ file in the `conf` directory: .... java.arg.13=-XX:+UseG1GC @@ -2405,10 +2402,10 @@ The `EncryptedWriteAheadProvenanceRepository` is a new implementation of the pro The `WriteAheadProvenanceRepository` was introduced in NiFi 1.2.0 and provided a refactored and much faster provenance repository implementation than the previous `PersistentProvenanceRepository`. The encrypted version wraps that implementation with a record writer and reader which encrypt and decrypt the serialized bytes respectively. -The fully qualified class `org.apache.nifi.provenance.EncryptedWriteAheadProvenanceRepository` is specified as the provenance repository implementation in `nifi.properties` as the value of `nifi.provenance.repository.implementation`. In addition, <<administration-guide.adoc#encrypted-write-ahead-provenance-repository-properties,new properties>> must be populated to allow successful initialization. +The fully qualified class `org.apache.nifi.provenance.EncryptedWriteAheadProvenanceRepository` is specified as the provenance repository implementation in _nifi.properties_ as the value of `nifi.provenance.repository.implementation`. In addition, <<administration-guide.adoc#encrypted-write-ahead-provenance-repository-properties,new properties>> must be populated to allow successful initialization. ===== StaticKeyProvider -The `StaticKeyProvider` implementation defines keys directly in `nifi.properties`. Individual keys are provided in hexadecimal encoding. The keys can also be encrypted like any other sensitive property in `nifi.properties` using the <<administration-guide.adoc#encrypt-config_tool,`./encrypt-config.sh`>> tool in the NiFi Toolkit. +The `StaticKeyProvider` implementation defines keys directly in _nifi.properties_. Individual keys are provided in hexadecimal encoding. The keys can also be encrypted like any other sensitive property in _nifi.properties_ using the <<administration-guide.adoc#encrypt-config_tool,`./encrypt-config.sh`>> tool in the NiFi Toolkit. The following configuration section would result in a key provider with two available keys, "Key1" (active) and "AnotherKey". .... @@ -2429,10 +2426,10 @@ key4=kZprfcTSTH69UuOU3jMkZfrtiVR/eqWmmbdku3bQcUJ/+UToecNB5lzOVEMBChyEXppyXXC35Wa key5=c6FzfnKm7UR7xqI2NFpZ+fEKBfSU7+1NvRw+XWQ9U39MONWqk5gvoyOCdFR1kUgeg46jrN5dGXk13sRqE0GETQ== .... -Each line defines a key ID and then the Base64-encoded cipher text of a 16 byte IV and wrapped AES-128, AES-192, or AES-256 key depending on the JCE policies available. The individual keys are wrapped by AES/GCM encryption using the **master key** defined by `nifi.bootstrap.sensitive.key` in `conf/bootstrap.conf`. +Each line defines a key ID and then the Base64-encoded cipher text of a 16 byte IV and wrapped AES-128, AES-192, or AES-256 key depending on the JCE policies available. The individual keys are wrapped by AES/GCM encryption using the **master key** defined by `nifi.bootstrap.sensitive.key` in _conf/bootstrap.conf_. ===== Key Rotation -Simply update `nifi.properties` to reference a new key ID in `nifi.provenance.repository.encryption.key.id`. Previously-encrypted events can still be decrypted as long as that key is still available in the key definition file or `nifi.provenance.repository.encryption.key.id.<OldKeyID>` as the key ID is serialized alongside the encrypted record. +Simply update _nifi.properties_ to reference a new key ID in `nifi.provenance.repository.encryption.key.id`. Previously-encrypted events can still be decrypted as long as that key is still available in the key definition file or `nifi.provenance.repository.encryption.key.id.<OldKeyID>` as the key ID is serialized alongside the encrypted record. ==== Writing and Reading Event Records Once the repository is initialized, all provenance event record write operations are serialized according to the configured schema writer (`EventIdFirstSchemaRecordWriter` by default for `WriteAheadProvenanceRepository`) to a `byte[]`. Those bytes are then encrypted using an implementation of `ProvenanceEventEncryptor` (the only current implementation is `AES/GCM/NoPadding`) and the encryption metadata (`keyId`, `algorithm`, `version`, `IV`) is serialized and prepended. The complete `byte[]` is then written to the repository on disk as normal.