> For the complete documentation index, see [llms.txt](https://docs.bluefletch.com/bluefletch-enterprise/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.bluefletch.com/bluefletch-enterprise/product-guides/bluefletch-launcher/configurable-layouts/application-object-variables.md).

# Application Object Variables

## Overview

This feature allows you to define reusable app or layout configurations as key-value pairs in the launcher.json file. Once defined, these variables can be referenced across multiple layout groups, eliminating the need to copy and paste configuration blocks.

## User Guide

1. Use the applicationObjects block to create a key (e.g., chatApp) and store reusable app or layout configurations.
2. Use the appObjectKey field in layout groups (e.g., AssociateApps or ManagerApps) to reference the key. Please see sample configuration [here](https://docs.bluefletch.com/bluefletch-enterprise/product-guides/bluefletch-launcher/configurable-layouts/layouts).
3. Override the label field in layout groups to provide unique labels for each reference.

## Feature Configuration

### Defining Application Variables

Use the applicationObjects block in the launcher.json file to define reusable variables. Each variable is a key-value pair in the launcher.json file, where the key represents the variable name and the value contains the reusable app or layout configuration.

Using Chat App as an example: Specify its package name, label, description, etc.

```json
"applicationObjects": {
   "chatApp": {
         "package": "com.bluefletch.staging.chat",
         "label": "Chat Label Will Be Overridden In Figure Below",
         "dateModified": "2024-10-03 10:10:10 UTC",
         "description": "describe the app here, reference info only for portal"
      }
}
```

Using Camera App as an example: Specify a label, URL, browser package, and browser-specific overrides.

```json
"applicationObjects": {
  "cameraApp": {
   	"label": "Camera Test",
   	"url": "https://usefulangle.com/demos/352/camera-capture-photo.html",
   	"browser": "com.bluefletch.ems.staging.browser",
   	"browserOverrides": {
     	"showTitle": true,
     	"showUrl": true,
     	"fixOrientation": true,
     	"allowCameraAccess": true
     }
}
```

### Configuring Layout Groups with Variables

Once application variables are specified, they can be referenced in layout groups using the appObjectKey field. This approach allows you to reuse the same configuration across multiple groups without duplicating the entire block.

Below is an example of using the chatApp application variable in the AssociateApps and ManagerApps layout groups:

```json
"AssociateApps": [
  {
    "appObjectKey": "chatApp",
    "label": "Associate Chat"
  }
],
"ManagerApps": [
  {
    "appObjectKey": "chatApp",
    "label": "Manager Chat"
  }
]
```

Note: The chatApp variable is defined once in the applicationObjects block and reused in both the AssociateApps and ManagerApps layout groups. As shown above, the 'label' field is the only one that can be overridden.

{% hint style="info" %}
Application Object Variables was introduced in Launcher v.4.2.144.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.bluefletch.com/bluefletch-enterprise/product-guides/bluefletch-launcher/configurable-layouts/application-object-variables.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
