Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Catalog apps are Workday-maintained. Any PR touching catalog/ needs a
# review from the DevRel team. Adjust the team slug to the real one, and
# note this is enforced once branch protection requires code owner reviews.
/catalog/ @Workday/devrel
1 change: 1 addition & 0 deletions .github/workflows/deploy-gallery.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ on:
push:
branches: [main]
paths:
- "catalog/**"
- "examples/**"
- "site/**"
- "hub.config.json"
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/validate-examples.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ name: Validate examples
on:
pull_request:
paths:
- "catalog/**"
- "examples/**"
- "scripts/**"
- "hub.config.json"
Expand Down
25 changes: 21 additions & 4 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@

Thanks for helping build the open home for Workday Build examples. Adding an example is deliberately low effort: a folder, two small files, one validation command.

## Two sections

- `examples/` is the community examples section. It is open to everyone, and it is where your PR goes. Everything in this guide is about it.
- `catalog/` holds Workday-built apps and is maintained by Workday (CODEOWNERS requires a DevRel review on any change there). Think something belongs in the catalog? Open an issue and we will take it from there.

## Ways to contribute

- **Add a new example.** The main event. See below.
Expand All @@ -12,15 +17,25 @@ Thanks for helping build the open home for Workday Build examples. Adding an exa
## Add an example

1. **Fork** this repository and create a branch.
2. **Scaffold the folder.** From the repository root:
2. **Scaffold the folder.** From the repository root, pick whichever command runs on your machine; they produce identical folders:

```bash
node scripts/new-example.mjs your-example-name --type "Extend App"
```

This creates `examples/your-example-name/` with a prefilled `example.json` and README skeleton. (You can also copy `examples/_template/` by hand.)
No Node on your machine? Use the shell versions instead:

```bash
./scripts/new-example.sh your-example-name --type "Extend App"
```

3. **Drop your artifact in.** Whatever it is: Extend app source exported from App Builder (via Local Disk Sync or the ZIP download), orchestration definitions, an agent skill as markdown, diagrams. The folder must be self-contained.
```powershell
powershell -ExecutionPolicy Bypass -File scripts\new-example.ps1 your-example-name -Type "Extend App"
```

Each creates `examples/your-example-name/` with a prefilled `example.json` and README skeleton. (You can also copy `examples/_template/` by hand.)

3. **Drop your artifact in.** Whatever it is: Extend app source (exported with Local Disk Sync, the WDCLI, or the ZIP download), orchestration definitions, an agent skill as markdown, diagrams. The folder must be self-contained.
4. **Fill in the two files.** `example.json` needs a title, a description, and a type; everything else is optional. The README needs three short sections: What it is, What's inside, How to use it.
5. **Validate.** From the repository root:

Expand Down Expand Up @@ -56,7 +71,7 @@ Useful references for what an example artifact looks like:

- [Extend app components](https://developer.workday.com/doc/kwv1612374098305.md): what makes up an Extend app (amd, smd, pmd, business objects, and the rest).
- [Local Disk Sync](https://developer.workday.com/doc/GUID-cbfd55e9-04f9-4480-879a-b63c42729a04-enHYPHENus.md): how to get your app source onto disk for submission.
- [App Builder](https://developer.workday.com/doc/zxh1651687589440.md): where Extend apps are built.
- [App Builder](https://developer.workday.com/doc/zxh1651687589440.md): one of the ways Extend apps get built. Your own IDE and the WDCLI work too; the hub does not care which tooling produced the artifact.
- Official orchestration walkthroughs, for example [Create Workday Home Card Orchestration](https://developer.workday.com/doc/mwd1629844754304.md) and [Get and Create Workday Employee Data](https://developer.workday.com/doc/mxj1630014392721.md).

## Preview the gallery locally (optional)
Expand All @@ -80,3 +95,5 @@ Workday DevRel reviews every pull request before merge. We look for:
- **It is safe.** No secrets, no real data, nothing tenant-specific.

We aim to respond within a few business days. Discussions on the PR are part of the process, so expect questions and suggestions rather than a silent merge or close.

Merged examples are labeled in the gallery: **Workday** for examples authored by Workday teams, **Community** for everything else. Community examples are held to works, safe, and honest; Workday-authored ones get a stricter pass because people copy them as reference.
49 changes: 31 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,29 +20,31 @@ Browse working examples, copy them into your own projects, and contribute your o

## What is this?

Workday Build samples used to live in many places: the App Catalog, the docs, the forum. This repository brings them into one place that you can browse, copy from, and add to.
Workday Build examples used to live in many places: the App Catalog, the docs, the forum. This repository brings them into one place that you can browse, copy from, and add to.

Every example:

- lives in its own folder under [`examples/`](examples) with everything it needs: Extend app source exported from App Builder, orchestration definitions, agent skills written as markdown, diagrams, whatever the artifact is.
- lives in its own folder under [`catalog/`](catalog) (Workday-built apps) or [`examples/`](examples) (community examples, open to everyone) with everything it needs: Extend app source, orchestration definitions, agent skills written as markdown, diagrams, whatever the artifact is.
- ships with two small files: `example.json` (metadata that drives the index below and the optional gallery) and a README that says what it is and how to use it.
- demonstrates a real Workday capability. Types, components, and products come from the approved lists in [`hub.config.json`](hub.config.json), and CI enforces them.

## Repository layout

```
examples/ Every example is a self-contained folder: open it, read its README
catalog/ Workday-built apps, maintained by Workday
examples/ Community examples, open to external contributions
_template/ Copy this (or run the scaffolder) to start a new example
scripts/
new-example.mjs Scaffold a new example folder in one command
new-example.sh / .ps1 The same scaffolder for machines without Node
validate-examples.mjs CI validation + README index generation
site/ Optional Astro gallery (not required to use the examples)
hub.config.json Repo URLs and the approved type, component, and product lists
```

## Example types

- 🧩 **Extend App**: full app source built in App Builder, ready to import into your development tenant.
- 🧩 **Extend App**: full app source, ready to deploy to your development tenant with whatever tooling you build with.
- 🔌 **Integration App**: orchestration-driven integrations connecting Workday to other systems.
- ⚙️ **Orchestration**: focused orchestration definitions for Orchestration Builder.
- 🤖 **Agent Skill**: agent skills and instructions, written as markdown.
Expand All @@ -52,34 +54,41 @@ hub.config.json Repo URLs and the approved type, component, and product

```bash
git clone https://github.com/Workday/Developer-Relations
cd Developer-Relations/examples
cd Developer-Relations
```

Open the folder you want and follow its README. What "use it" means depends on the type:
Open the folder you want under `catalog/` or `examples/` and follow its README. What "use it" means depends on the type:

- **Extend app source**: import the folder into App Builder against your WCP development tenant (or upload the ZIP to App Hub), then deploy, install, and launch.
- **Orchestrations and integration apps**: import into Orchestration Builder and point the credentials at your tenant.
- **Extend app source**: deploy to your WCP development tenant with your usual tooling (App Builder, the (VScode, Cursor, Claude code) plugins, or the WDCLI), then install and launch.
- **Orchestrations and integration apps**: import into Orchestration Builder, promote if your tenant needs it, and deploy to your tenant.
- **Agent skills and reference material**: read, copy, adapt.

## All examples
## App catalog

This table is kept in sync with each example's `example.json` by `scripts/validate-examples.mjs`.
Workday-built apps, maintained by Workday. Both tables below are kept in sync with each entry's `example.json` by `scripts/validate-examples.mjs`.

<!-- examples:start -->
<!-- catalog:start -->
| Example | Description | Type |
| --- | --- | --- |
| [`work-from-anywhere-extend-app`](catalog/work-from-anywhere-extend-app) | Enable employees to request to work from anywhere, for a manager to approve, and see requests on a calendar view. | Extend App |
<!-- catalog:end -->

## Examples

| Example | Description | Type |
| ------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | ------------- |
| [`expense-policy-agent-skill`](examples/expense-policy-agent-skill) | A markdown skill that teaches an agent to answer expense policy questions and escalate anything it cannot verify. | Agent Skill |
| [`employee-data-orchestration`](examples/employee-data-orchestration) | An orchestration that reads worker data from one tenant and creates matching records through the Workday REST API. | Orchestration |
| [`work-from-anywhere-extend-app`](examples/work-from-anywhere-extend-app) | Enable employees to request to work from anywhere, for a manager to approve, and see requests on a calendar view. | Extend App |
Community examples, open to everyone. This is the section external contributions land in.

<!-- examples:start -->
| Example | Description | Type |
| --- | --- | --- |
| [`expense-policy-agent-skill`](examples/expense-policy-agent-skill) | A markdown skill that teaches an agent to answer expense policy questions and escalate anything it cannot verify. | Agent Skill |
| [`employee-data-orchestration`](examples/employee-data-orchestration) | An orchestration that reads worker data from one tenant and creates matching records through the Workday REST API. | Orchestration |
<!-- examples:end -->

## Contributing

We want your examples, and adding one doesn't take much:
We want your examples. Community contributions go into `examples/` (the Examples section); the catalog is Workday-maintained, so if you think something belongs there, open an issue instead. Adding an example doesn't take much:

1. Scaffold a folder: `node scripts/new-example.mjs your-example-name`
1. Scaffold a folder: `node scripts/new-example.mjs your-example-name`. No Node? `./scripts/new-example.sh` (macOS, Linux) and `scripts\new-example.ps1` (Windows) do the same thing.
2. Drop your artifact in, and fill in the generated `example.json` and README.
3. Validate: `node scripts/validate-examples.mjs`
4. Open a pull request. Workday DevRel reviews every submission before merge.
Expand Down Expand Up @@ -110,6 +119,10 @@ There is no hosted version while this repository is private. Once it is public,
- **Bugs in an example**: open an [issue](https://github.com/Workday/Developer-Relations/issues) using the bug report template.
- **New example proposals**: open an issue with the proposal template before you build, if you want early feedback.

## Use at your own pace, verify everything

Everything in this repository is provided as is, without warranty of any kind. Examples are starting points, not production software. Review the code, adapt it to your configuration, and always test in a non-production tenant before deploying anything to a tenant you care about. Submissions are reviewed before merge, but review does not replace your own verification.

## License

License terms are being finalized. Until a LICENSE file lands in this repository, treat the examples as reference material for building on Workday.
7 changes: 7 additions & 0 deletions catalog/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# App catalog

Workday-built apps, maintained by Workday. Every folder here is a complete app: open it, read its README, and deploy it to your development tenant with whatever tooling you build with.

This section is not open to external pull requests; CODEOWNERS requires a DevRel review on any change. Think something belongs here? Open an issue and we will take it from there.

Contributing your own work? That lives in [examples/](../examples/), and the [contributing guide](../CONTRIBUTING.md) covers the whole flow.
Original file line number Diff line number Diff line change
Expand Up @@ -4,26 +4,20 @@

An Extend app that lets employees request to work from anywhere, routes the request to their manager for approval, and shows everyone's arrangements on a calendar view.

Status: this is a sample entry that demonstrates the hub's format. The `app-source/` folder holds a placeholder until the real App Builder export lands.
Status: this is a sample entry that demonstrates the hub's format. The `app-source/` folder holds a placeholder until the real app source export lands.

## What's inside

- `app-source/` is where the app source exported from App Builder lives: app metadata (amd), site metadata (smd), pages (pmd), business objects, and security domains.
- `app-source/` is where the exported app source lives: app metadata (amd), site metadata (smd), pages (pmd), business objects, and security domains.
- `example.json` drives the card in the gallery and the index table in the repository README.

## Deploy instructions

### App Builder (recommended)
Use whatever tooling you normally build with:

1. Open App Builder against your WCP development tenant.
2. Import this folder with Open a Local Folder, or upload the source as a ZIP to App Hub.
3. Save and Deploy, then install and launch the app in your tenant.

### IntelliJ plugin (alternative)

1. Install the Workday Extend Plugin for IntelliJ.
2. Open this folder in IntelliJ.
3. Log in to Workday Extend and your tenant, then deploy the app to the tenant.
- **App Builder**: import this folder (or upload the source as a ZIP to App Hub), Save and Deploy, then install and launch in your tenant.
- **IntelliJ plugin**: open the folder, log in to Workday Extend and your tenant, then deploy to the tenant.
- **WDCLI**: push the app source to App Hub from your terminal as the developer CLI rolls out.

## Configuration

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# App source goes here

Replace this folder's contents with your exported app source (Local Disk Sync, the WDCLI, or the ZIP download from App Hub). The export includes the amd and smd metadata, pmd pages, business objects, and security domains.
19 changes: 19 additions & 0 deletions catalog/work-from-anywhere-extend-app/example.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"title": "Work From Almost Anywhere",
"description": "Enable employees to request to work from anywhere, for a manager to approve, and see requests on a calendar view.",
"type": "Extend App",
"components": [
"Presentation",
"Model",
"Template"
],
"products": [
"Workday Extend",
"Workday HCM"
],
"authors": [
"obinnacodes"
],
"tutorial": "",
"source": "workday"
}
11 changes: 11 additions & 0 deletions examples/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Examples

The community section, open to everyone. Every folder here is a self-contained example: the artifact plus an `example.json` and a README that says what it is and how to use it.

Add your own in minutes:

- `node scripts/new-example.mjs my-example-name` from the repository root
- No Node? `./scripts/new-example.sh` (macOS, Linux) or `scripts\new-example.ps1` (Windows)
- No tooling at all? Copy [_template/](_template/) by hand, even from the GitHub web UI

Fill in the two generated files, drop your artifact in, and open a pull request. The [contributing guide](../CONTRIBUTING.md) has the details, and Workday DevRel reviews every submission before merge.
7 changes: 4 additions & 3 deletions examples/_template/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ One short paragraph: what this example shows and who it is for. If it maps to a

Bullet the contents of this folder so a reader knows what they are looking at. For instance:

- `app/` holds the Extend app source exported from App Builder
- `app/` holds the exported Extend app source
- `orchestrations/` holds the orchestration definitions
- `SKILL.md` is the agent skill
- `diagrams/` holds the architecture drawings
Expand All @@ -17,8 +17,8 @@ Bullet the contents of this folder so a reader knows what they are looking at. F

The concrete steps to put this example to work, whatever that means for this artifact. Examples:

- **Extend app source**: import the folder into App Builder against your WCP development tenant (or upload the ZIP to App Hub), then deploy, install, and launch.
- **Orchestration**: import it in Orchestration Builder and point the credentials at your tenant.
- **Extend app source**: deploy to your WCP development tenant with your usual tooling (App Builder, the IDE plugins, or the WDCLI), then install and launch.
- **Orchestration**: import it in Orchestration Builder, promote if your tenant needs it, and deploy to your tenant.
- **Agent skill or reference material**: read it, copy it, adapt it.

If your example needs configuration (credentials, tenant URLs), document the variables here and never commit real values.
Expand All @@ -38,5 +38,6 @@ Metadata is JSON only. All fields:
| `products` | No | Workday products touched, from the `products` list in `hub.config.json` |
| `authors` | No | GitHub usernames |
| `tutorial` | No | An https link to a walkthrough. Adds a Tutorial link to the card. Omit or leave empty if none |
| `source` | No | Leave it as `community` (the default). DevRel sets `workday` on examples authored by Workday teams, which controls the badge in the gallery |

Validate from the repository root with `node scripts/validate-examples.mjs`.
3 changes: 2 additions & 1 deletion examples/_template/example.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,6 @@
"components": [],
"products": [],
"authors": [],
"tutorial": ""
"tutorial": "",
"source": "community"
}
8 changes: 4 additions & 4 deletions examples/employee-data-orchestration/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ Status: this is a sample entry that demonstrates the hub's format. The `orchestr

## How to use it

1. Open Orchestration Builder in your development tenant.
2. Import the orchestration definition from `orchestration/`.
3. Point the orchestration credentials at your tenant's Integration System User.
4. Run it, then check Orchestration Activity for the execution log.
1. Import the orchestration definition from `orchestration/` in Orchestration Builder.
2. Point the orchestration credentials at your tenant's Integration System User.
3. With Workday Extend, push straight to your development tenant and run it. Without Extend, promote the orchestration to IMPL, then deploy it to your tenant.
4. Check Orchestration Activity for the execution log.

## Related documentation

Expand Down
16 changes: 12 additions & 4 deletions examples/employee-data-orchestration/example.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,16 @@
"title": "Get and Create Employee Data",
"description": "An orchestration that reads worker data from one tenant and creates matching records through the Workday REST API.",
"type": "Orchestration",
"components": ["Orchestration"],
"products": ["Workday Orchestrate", "Workday REST API"],
"authors": ["obinnacodes"],
"tutorial": "https://developer.workday.com/doc/mxj1630014392721.md"
"components": [
"Orchestration"
],
"products": [
"Workday Orchestrate",
"Workday REST API"
],
"authors": [
"obinnacodes"
],
"tutorial": "https://developer.workday.com/doc/mxj1630014392721.md",
"source": "workday"
}
3 changes: 2 additions & 1 deletion examples/expense-policy-agent-skill/example.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,6 @@
"components": [],
"products": ["Workday Financials"],
"authors": ["obinnacodes"],
"tutorial": ""
"tutorial": "",
"source": "community"
}

This file was deleted.

Loading