From 381c76065aa2004157cff8afa68d66db60d13820 Mon Sep 17 00:00:00 2001 From: Anil K Patel Date: Mon, 15 Jun 2026 14:14:32 +0530 Subject: [PATCH 1/5] Implemented: Manufacturing demo data component with demo map (OFBIZ-13438) --- manufacturing-demo/README.md | 52 +++ manufacturing-demo/build.gradle | 20 ++ .../data/ManufacturingMrpDemoData.xml | 303 ++++++++++++++++++ manufacturing-demo/manifest.yaml | 99 ++++++ manufacturing-demo/ofbiz-component.xml | 31 ++ 5 files changed, 505 insertions(+) create mode 100644 manufacturing-demo/README.md create mode 100644 manufacturing-demo/build.gradle create mode 100644 manufacturing-demo/data/ManufacturingMrpDemoData.xml create mode 100644 manufacturing-demo/manifest.yaml create mode 100644 manufacturing-demo/ofbiz-component.xml diff --git a/manufacturing-demo/README.md b/manufacturing-demo/README.md new file mode 100644 index 000000000..ae9962ba7 --- /dev/null +++ b/manufacturing-demo/README.md @@ -0,0 +1,52 @@ +# manufacturing-demo — OFBiz as a Manufacturing + MRP system (demo / reference environment) + +A loadable, **self-contained** Apache OFBiz component that stands up a **skateboard +factory** on stock entities, so you can explore OFBiz configured as a Manufacturing + MRP +system and reproduce the published manufacturing how-to series end to end. It brings its +own company, login and all manufacturing data — nothing is silently pulled from the stock +`demo` data set. + +The scenario and sample data are the work of **Swapnil Shah** (see the Apache OFBiz +cwiki, *Manufacturing* space). Product, routing and machine IDs are preserved verbatim +so the demo lines up with those articles. + +## What this first slice models + +The **standing manufacturing configuration** — the "at rest" picture of a manufacturing +company's OFBiz instance. No transactions yet (no production runs, inventory, orders, +forecasts or costing rates). + +- **Company & plant** — its own `Company` organization (copied from OFBiz's `AccountingDemoData`, + tagged `MANUFACTURER`) and a production plant facility `MFG_PLANT` (type `PLANT`). +- **Login** — a focused, manufacturing-capable `admin` user (password `ofbiz`) in a + `FULLADMIN` group granted only this demo's permissions (`OFBTOOLS_VIEW`, `CATALOG_VIEW`, + `MANUFACTURING_*`, plus `WORKEFFORTMGR_ADMIN` / `ASSETMAINT_ADMIN` — production runs are + WorkEfforts). It drives the Manufacturing app, not unrelated back-office apps. +- **Products** — the finished skateboard deck (`DCGAPSOSR12`), its sub-assembly + (`DSK15144-00`), and the purchased raw materials (glue, maple veneers, sticker, + warranty card, transfer), correctly typed `FINISHED_GOOD` / `SUBASSEMBLY` / `RAW_MATERIAL`. +- **Bill of Materials** — two-tier `MANUF_COMPONENT` structure. +- **Machines** — two production machines (`AMC`, `LAM`) as fixed assets, each with a + work calendar (`AMC` 5-day week, `LAM` 3-day week). +- **Routings** — routings and operations tied to the products they produce. +- **Purchasing** — five suppliers and the vendor relationships for the raw materials. + +## Load it + +Self-contained — load it on `seed` + `seed-initial` only (no stock `demo` needed), on the +custom `manufacturingDemo` reader: + +```bash +# from the framework root +./gradlew "ofbiz --load-data readers=seed,seed-initial,manufacturingDemo" +``` + +Then start OFBiz and log in to the Manufacturing application with `admin` / `ofbiz`. The +component auto-registers (it contains an `ofbiz-component.xml`); restart OFBiz to pick it up. + +## Roadmap + +Later slices add the transactional and analytical layers on top of this configuration: +variant/virtual-product BOMs, work-calendar exceptions, standalone production runs, +sales forecasts + MRP execution, and weighted-average material + actual production +costing (the published `$231`/unit worked example). diff --git a/manufacturing-demo/build.gradle b/manufacturing-demo/build.gradle new file mode 100644 index 000000000..b701b3a35 --- /dev/null +++ b/manufacturing-demo/build.gradle @@ -0,0 +1,20 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, 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. + */ +// manufacturing-demo is a self-contained Manufacturing + MRP demo/reference environment built +// entirely on stock OFBiz framework + applications data; it needs no external dependencies. diff --git a/manufacturing-demo/data/ManufacturingMrpDemoData.xml b/manufacturing-demo/data/ManufacturingMrpDemoData.xml new file mode 100644 index 000000000..55b76a39d --- /dev/null +++ b/manufacturing-demo/data/ManufacturingMrpDemoData.xml @@ -0,0 +1,303 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/manufacturing-demo/manifest.yaml b/manufacturing-demo/manifest.yaml new file mode 100644 index 000000000..120813746 --- /dev/null +++ b/manufacturing-demo/manifest.yaml @@ -0,0 +1,99 @@ +# manufacturing-demo manifest — a structured map of the demo's contents. +# Source of truth for entities is data/ManufacturingMrpDemoData.xml; this file is a derived map +# kept in sync with it. Not loaded by OFBiz. +component: manufacturing-demo +reader: manufacturingDemo +scenario: Skateboard factory (standing manufacturing configuration) +source: Swapnil Shah (Apache OFBiz cwiki, Manufacturing space) +scope: "slice 1 — standing config (no inventory, forecasts, MRP runs or costing rates)" +selfContained: true # brings its own company + login; needs no stock 'demo' data +loadCommand: './gradlew "ofbiz --load-data readers=seed,seed-initial,manufacturingDemo"' + +company: + partyId: Company + roles: [INTERNAL_ORGANIZATIO, MANUFACTURER] +login: + userLoginId: admin + password: ofbiz + group: FULLADMIN + grantedPermissions: [OFBTOOLS_VIEW, CATALOG_VIEW, MANUFACTURING_VIEW, MANUFACTURING_CREATE, MANUFACTURING_UPDATE, MANUFACTURING_DELETE, MANUFACTURING_ADMIN, WORKEFFORTMGR_ADMIN, ASSETMAINT_ADMIN] + note: "Focused manufacturing-capable admin (manufacturing + the WorkEffort/AssetMaint families production runs require); not granted unrelated app permissions." +facility: + id: MFG_PLANT + type: PLANT + name: Skateboard Manufacturing Plant + +products: + - { id: DCGAPSOSR12, type: FINISHED_GOOD, name: "Skateboard Deck FG", bomLevel: 0 } + - { id: DSK15144-00, type: SUBASSEMBLY, name: "Skateboard Deck Sub Assembly", bomLevel: 1 } + - { id: DRGAMBSK8II, type: RAW_MATERIAL, name: "Glue", bomLevel: 2 } + - { id: DRVM52105036FAS, type: RAW_MATERIAL, name: "veneer maple face", bomLevel: 2 } + - { id: DRVM60361050XA, type: RAW_MATERIAL, name: "veneer maple x ply", bomLevel: 2 } + - { id: DRVM62105036CA, type: RAW_MATERIAL, name: "veneer maple core", bomLevel: 2 } + - { id: DCSPPUSA, type: RAW_MATERIAL, name: "sticker", bomLevel: 1 } + - { id: DRSASOCWC2, type: RAW_MATERIAL, name: "warranty card", bomLevel: 1 } + - { id: DRTGPSOSR12, type: RAW_MATERIAL, name: "Transfer", bomLevel: 1 } + +bomLines: + - { parent: DSK15144-00, component: DRGAMBSK8II, qty: 0.83 } + - { parent: DSK15144-00, component: DRVM52105036FAS, qty: 2 } + - { parent: DSK15144-00, component: DRVM60361050XA, qty: 2 } + - { parent: DSK15144-00, component: DRVM62105036CA, qty: 3 } + - { parent: DCGAPSOSR12, component: DCSPPUSA, qty: 1 } + - { parent: DCGAPSOSR12, component: DRSASOCWC2, qty: 1 } + - { parent: DCGAPSOSR12, component: DRTGPSOSR12, qty: 1 } + - { parent: DCGAPSOSR12, component: DSK15144-00, qty: 1 } + +machines: + - { id: AMC, calendar: CAL_AMC, locatedAt: MFG_PLANT } + - { id: LAM, calendar: CAL_LAM, locatedAt: MFG_PLANT } + +calendars: + - { id: CAL_AMC, week: CW_AMC_STD, pattern: "5-day work week" } + - { id: CAL_LAM, week: CW_LAM_STD, pattern: "3-day work week (Mon/Wed/Fri)" } + +routings: + - id: MANUF10169 + product: DSK15144-00 + tasks: + - { id: MANUF20169, name: "LAM", machine: LAM, estimatedMs: 300000, seq: 10 } + - { id: MANUF10170, name: "Shape Deck", machine: null, estimatedMs: null, seq: 20 } + - id: MANUF10165 + product: DCGAPSOSR12 + tasks: + - { id: MANUF10171, name: "Apply Transfer to deck", machine: AMC, estimatedMs: 300000, seq: 10 } + +suppliers: + - { id: SUP_001, name: "Maplewood Veneer Supply" } + - { id: SUP_002, name: "Adhesive Solutions Inc." } + - { id: SUP_003, name: "Sticker Print Co." } + - { id: SUP_004, name: "Universal Bearings Ltd." } + - { id: SUP_005, name: "Packaging Solutions LLC" } + +supplierProducts: + - { product: DRGAMBSK8II, supplier: SUP_002, lastPrice: 22.50, minOrderQty: 50 } + - { product: DRVM60361050XA, supplier: SUP_001, lastPrice: 18.75, minOrderQty: 100 } + - { product: DCSPPUSA, supplier: SUP_003, lastPrice: 0.35, minOrderQty: 500 } + +quickstartSteps: + - { action: "Get OFBiz and plugins", command: "git clone .../ofbiz-framework.git && ./gradlew pullAllPluginsSource", expectedResult: "plugins/manufacturing-demo/ exists" } + - { action: "Load demo data", command: './gradlew "ofbiz --load-data readers=seed,seed-initial,manufacturingDemo"', expectedResult: "load completes; Company + admin login + MFG_PLANT exist" } + - { action: "Start OFBiz", command: "./gradlew ofbiz", expectedResult: "server reachable; login admin/ofbiz" } + - { action: "See company and plant", screen: "Manufacturing/Catalog app", expectedResult: "MFG_PLANT and 9 products visible" } + - { action: "View multi-level BOM", screen: "BOM for DCGAPSOSR12", expectedResult: "two-tier BOM (sub-assembly + finishing items)" } + - { action: "View routing", screen: "Routing for DCGAPSOSR12", expectedResult: "tasks on machines AMC/LAM" } + - { action: "Create standalone production run", screen: "Production run for DCGAPSOSR12 at MFG_PLANT", expectedResult: "run created; operations + component requirements generated" } + - { action: "Confirm/schedule run", screen: "Production run detail", expectedResult: "status transitions; tasks + material requirements visible" } + +verificationAnchors: + totalValues: 99 # rows the manufacturingDemo reader loads (EntitySaxReader "Finished N values") + products: 9 + bomLines: 8 + routings: 2 + routingTasks: 3 + machines: 2 + calendars: 2 + suppliers: 5 + supplierProducts: 3 + securityGroupPermissions: 9 # FULLADMIN grants for the focused manufacturing-capable admin + userLogins: 1 diff --git a/manufacturing-demo/ofbiz-component.xml b/manufacturing-demo/ofbiz-component.xml new file mode 100644 index 000000000..54e590a27 --- /dev/null +++ b/manufacturing-demo/ofbiz-component.xml @@ -0,0 +1,31 @@ + + + + + + + + From 03f6495ecca872330b00cd9aed70af83b0582dc0 Mon Sep 17 00:00:00 2001 From: diveshdut Date: Thu, 9 Jul 2026 16:40:26 +0530 Subject: [PATCH 2/5] fix(manufacturing-demo): add FG BOM target and catalog admin --- manufacturing-demo/data/ManufacturingMrpDemoData.xml | 7 +++++++ manufacturing-demo/manifest.yaml | 11 ++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/manufacturing-demo/data/ManufacturingMrpDemoData.xml b/manufacturing-demo/data/ManufacturingMrpDemoData.xml index 55b76a39d..524f917b7 100644 --- a/manufacturing-demo/data/ManufacturingMrpDemoData.xml +++ b/manufacturing-demo/data/ManufacturingMrpDemoData.xml @@ -81,6 +81,7 @@ under the License. + @@ -107,6 +108,11 @@ under the License. productName="Skateboard Deck FG" inventoryItemTypeId="NON_SERIAL_INV_ITEM" isVirtual="N" isVariant="N" billOfMaterialLevel="0" inShippingBox="N" lotIdFilledIn="Allowed" quantityUomId="WT_lb"/> + + + diff --git a/manufacturing-demo/manifest.yaml b/manufacturing-demo/manifest.yaml index 120813746..2162dc486 100644 --- a/manufacturing-demo/manifest.yaml +++ b/manufacturing-demo/manifest.yaml @@ -16,7 +16,7 @@ login: userLoginId: admin password: ofbiz group: FULLADMIN - grantedPermissions: [OFBTOOLS_VIEW, CATALOG_VIEW, MANUFACTURING_VIEW, MANUFACTURING_CREATE, MANUFACTURING_UPDATE, MANUFACTURING_DELETE, MANUFACTURING_ADMIN, WORKEFFORTMGR_ADMIN, ASSETMAINT_ADMIN] + grantedPermissions: [OFBTOOLS_VIEW, CATALOG_VIEW, CATALOG_ADMIN, MANUFACTURING_VIEW, MANUFACTURING_CREATE, MANUFACTURING_UPDATE, MANUFACTURING_DELETE, MANUFACTURING_ADMIN, WORKEFFORTMGR_ADMIN, ASSETMAINT_ADMIN] note: "Focused manufacturing-capable admin (manufacturing + the WorkEffort/AssetMaint families production runs require); not granted unrelated app permissions." facility: id: MFG_PLANT @@ -25,6 +25,7 @@ facility: products: - { id: DCGAPSOSR12, type: FINISHED_GOOD, name: "Skateboard Deck FG", bomLevel: 0 } + - { id: DCGAPSOSR13, type: FINISHED_GOOD, name: "Skateboard Deck FG Alt", bomLevel: 0 } - { id: DSK15144-00, type: SUBASSEMBLY, name: "Skateboard Deck Sub Assembly", bomLevel: 1 } - { id: DRGAMBSK8II, type: RAW_MATERIAL, name: "Glue", bomLevel: 2 } - { id: DRVM52105036FAS, type: RAW_MATERIAL, name: "veneer maple face", bomLevel: 2 } @@ -79,15 +80,15 @@ quickstartSteps: - { action: "Get OFBiz and plugins", command: "git clone .../ofbiz-framework.git && ./gradlew pullAllPluginsSource", expectedResult: "plugins/manufacturing-demo/ exists" } - { action: "Load demo data", command: './gradlew "ofbiz --load-data readers=seed,seed-initial,manufacturingDemo"', expectedResult: "load completes; Company + admin login + MFG_PLANT exist" } - { action: "Start OFBiz", command: "./gradlew ofbiz", expectedResult: "server reachable; login admin/ofbiz" } - - { action: "See company and plant", screen: "Manufacturing/Catalog app", expectedResult: "MFG_PLANT and 9 products visible" } + - { action: "See company and plant", screen: "Manufacturing/Catalog app", expectedResult: "MFG_PLANT and 10 products visible" } - { action: "View multi-level BOM", screen: "BOM for DCGAPSOSR12", expectedResult: "two-tier BOM (sub-assembly + finishing items)" } - { action: "View routing", screen: "Routing for DCGAPSOSR12", expectedResult: "tasks on machines AMC/LAM" } - { action: "Create standalone production run", screen: "Production run for DCGAPSOSR12 at MFG_PLANT", expectedResult: "run created; operations + component requirements generated" } - { action: "Confirm/schedule run", screen: "Production run detail", expectedResult: "status transitions; tasks + material requirements visible" } verificationAnchors: - totalValues: 99 # rows the manufacturingDemo reader loads (EntitySaxReader "Finished N values") - products: 9 + totalValues: 101 # rows the manufacturingDemo reader loads (EntitySaxReader "Finished N values") + products: 10 bomLines: 8 routings: 2 routingTasks: 3 @@ -95,5 +96,5 @@ verificationAnchors: calendars: 2 suppliers: 5 supplierProducts: 3 - securityGroupPermissions: 9 # FULLADMIN grants for the focused manufacturing-capable admin + securityGroupPermissions: 10 # FULLADMIN grants for the focused manufacturing-capable admin userLogins: 1 From 5a0305c2f15ce74989e4b645952cb69d2472d75c Mon Sep 17 00:00:00 2001 From: diveshdut Date: Thu, 9 Jul 2026 16:47:58 +0530 Subject: [PATCH 3/5] fix(manufacturing-demo): unset reorder qty for subassembly --- manufacturing-demo/data/ManufacturingMrpDemoData.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manufacturing-demo/data/ManufacturingMrpDemoData.xml b/manufacturing-demo/data/ManufacturingMrpDemoData.xml index 524f917b7..fd93aeb3b 100644 --- a/manufacturing-demo/data/ManufacturingMrpDemoData.xml +++ b/manufacturing-demo/data/ManufacturingMrpDemoData.xml @@ -247,7 +247,7 @@ under the License. - + From cfe4ab27f14ccab5624ae8c77f2c3717452988c8 Mon Sep 17 00:00:00 2001 From: diveshdut Date: Tue, 4 Aug 2026 15:59:03 +0530 Subject: [PATCH 4/5] OFBIZ-13438 Add routing operation demo baseline --- manufacturing-demo/README.md | 8 +++- .../data/ManufacturingMrpDemoData.xml | 38 +++++++++++++++++++ manufacturing-demo/manifest.yaml | 34 +++++++++++++++-- 3 files changed, 74 insertions(+), 6 deletions(-) diff --git a/manufacturing-demo/README.md b/manufacturing-demo/README.md index ae9962ba7..8ec2c32fd 100644 --- a/manufacturing-demo/README.md +++ b/manufacturing-demo/README.md @@ -14,7 +14,7 @@ so the demo lines up with those articles. The **standing manufacturing configuration** — the "at rest" picture of a manufacturing company's OFBiz instance. No transactions yet (no production runs, inventory, orders, -forecasts or costing rates). +forecasts or production costing results). - **Company & plant** — its own `Company` organization (copied from OFBiz's `AccountingDemoData`, tagged `MANUFACTURER`) and a production plant facility `MFG_PLANT` (type `PLANT`). @@ -28,7 +28,11 @@ forecasts or costing rates). - **Bill of Materials** — two-tier `MANUF_COMPONENT` structure. - **Machines** — two production machines (`AMC`, `LAM`) as fixed assets, each with a work calendar (`AMC` 5-day week, `LAM` 3-day week). -- **Routings** — routings and operations tied to the products they produce. +- **Routings** — routings and operations tied to the products they produce, including + a stable alternate-deck routing baseline for operation maintenance flows. +- **Shop-floor references** — a worker party, routing labor cost calculation rule, + task output, tool standard and operator assignment, so routing-cost screens work + without the stock `demo` reader. - **Purchasing** — five suppliers and the vendor relationships for the raw materials. ## Load it diff --git a/manufacturing-demo/data/ManufacturingMrpDemoData.xml b/manufacturing-demo/data/ManufacturingMrpDemoData.xml index fd93aeb3b..f012ebe95 100644 --- a/manufacturing-demo/data/ManufacturingMrpDemoData.xml +++ b/manufacturing-demo/data/ManufacturingMrpDemoData.xml @@ -205,6 +205,19 @@ under the License. locatedAtFacilityId="MFG_PLANT" calendarId="CAL_LAM" purchaseCost="25000.000000" salvageValue="2500.000000" depreciation="2500.000000"/> + + + + + + + + + + + @@ -242,6 +255,31 @@ under the License. + + + + + + + + + + diff --git a/manufacturing-demo/manifest.yaml b/manufacturing-demo/manifest.yaml index 2162dc486..b5dbf0cdf 100644 --- a/manufacturing-demo/manifest.yaml +++ b/manufacturing-demo/manifest.yaml @@ -5,7 +5,7 @@ component: manufacturing-demo reader: manufacturingDemo scenario: Skateboard factory (standing manufacturing configuration) source: Swapnil Shah (Apache OFBiz cwiki, Manufacturing space) -scope: "slice 1 — standing config (no inventory, forecasts, MRP runs or costing rates)" +scope: "slice 1 — standing config (no inventory, forecasts, MRP runs or production costing results)" selfContained: true # brings its own company + login; needs no stock 'demo' data loadCommand: './gradlew "ofbiz --load-data readers=seed,seed-initial,manufacturingDemo"' @@ -49,6 +49,12 @@ machines: - { id: AMC, calendar: CAL_AMC, locatedAt: MFG_PLANT } - { id: LAM, calendar: CAL_LAM, locatedAt: MFG_PLANT } +operators: + - { id: SK8_ASM_OPERATOR, role: WORKER, name: "Skateboard Operator" } + +costCalcs: + - { id: SK8_TASK_COST_CALC, description: "Skateboard routing labor standard", currency: USD } + calendars: - { id: CAL_AMC, week: CW_AMC_STD, pattern: "5-day work week" } - { id: CAL_LAM, week: CW_LAM_STD, pattern: "3-day work week (Mon/Wed/Fri)" } @@ -63,6 +69,20 @@ routings: product: DCGAPSOSR12 tasks: - { id: MANUF10171, name: "Apply Transfer to deck", machine: AMC, estimatedMs: 300000, seq: 10 } + - id: SK8_ALT_ROUTING + product: DCGAPSOSR13 + tasks: + - { id: SK8_TRANSFER_TASK, name: "Apply Transfer to Alt Deck", machine: AMC, estimatedMs: 420000, seq: 10 } + +routingOperationReferences: + costRates: + - { task: SK8_TRANSFER_TASK, costType: EST_STD_LABOR_COST, costCalc: SK8_TASK_COST_CALC } + outputs: + - { task: SK8_TRANSFER_TASK, product: DCGAPSOSR13, type: PRUNT_PROD_DELIV } + tools: + - { task: SK8_TRANSFER_TASK, fixedAssetType: GROUP_EQUIPMENT } + assignments: + - { task: SK8_TRANSFER_TASK, party: SK8_ASM_OPERATOR, role: WORKER } suppliers: - { id: SUP_001, name: "Maplewood Veneer Supply" } @@ -87,12 +107,18 @@ quickstartSteps: - { action: "Confirm/schedule run", screen: "Production run detail", expectedResult: "status transitions; tasks + material requirements visible" } verificationAnchors: - totalValues: 101 # rows the manufacturingDemo reader loads (EntitySaxReader "Finished N values") + totalValues: 115 # rows the manufacturingDemo reader loads (EntitySaxReader "Finished N values") products: 10 bomLines: 8 - routings: 2 - routingTasks: 3 + routings: 3 + routingTasks: 4 machines: 2 + operators: 1 + costCalcs: 1 + routingCostRates: 1 + routingOutputs: 1 + routingToolStandards: 1 + routingOperatorAssignments: 1 calendars: 2 suppliers: 5 supplierProducts: 3 From 0c53b0fc8ecd823154e1d10322347c569cafb7b9 Mon Sep 17 00:00:00 2001 From: diveshdut Date: Tue, 4 Aug 2026 16:07:04 +0530 Subject: [PATCH 5/5] OFBIZ-13438 Address Sonar findings in manufacturing demo --- manufacturing-demo/README.md | 12 ++++++----- manufacturing-demo/build.gradle | 20 ------------------ .../data/ManufacturingMrpDemoData.xml | 21 +++++++++---------- manufacturing-demo/manifest.yaml | 7 +++---- manufacturing-demo/ofbiz-component.xml | 2 +- 5 files changed, 21 insertions(+), 41 deletions(-) delete mode 100644 manufacturing-demo/build.gradle diff --git a/manufacturing-demo/README.md b/manufacturing-demo/README.md index 8ec2c32fd..c05d0b561 100644 --- a/manufacturing-demo/README.md +++ b/manufacturing-demo/README.md @@ -18,10 +18,11 @@ forecasts or production costing results). - **Company & plant** — its own `Company` organization (copied from OFBiz's `AccountingDemoData`, tagged `MANUFACTURER`) and a production plant facility `MFG_PLANT` (type `PLANT`). -- **Login** — a focused, manufacturing-capable `admin` user (password `ofbiz`) in a - `FULLADMIN` group granted only this demo's permissions (`OFBTOOLS_VIEW`, `CATALOG_VIEW`, +- **Login/security** — a focused, manufacturing-capable `admin` login and `FULLADMIN` + group granted only this demo's permissions (`OFBTOOLS_VIEW`, `CATALOG_VIEW`, `MANUFACTURING_*`, plus `WORKEFFORTMGR_ADMIN` / `ASSETMAINT_ADMIN` — production runs are - WorkEfforts). It drives the Manufacturing app, not unrelated back-office apps. + WorkEfforts). The plugin does not embed a password; set one using standard OFBiz + admin-user setup for the target environment. - **Products** — the finished skateboard deck (`DCGAPSOSR12`), its sub-assembly (`DSK15144-00`), and the purchased raw materials (glue, maple veneers, sticker, warranty card, transfer), correctly typed `FINISHED_GOOD` / `SUBASSEMBLY` / `RAW_MATERIAL`. @@ -45,8 +46,9 @@ custom `manufacturingDemo` reader: ./gradlew "ofbiz --load-data readers=seed,seed-initial,manufacturingDemo" ``` -Then start OFBiz and log in to the Manufacturing application with `admin` / `ofbiz`. The -component auto-registers (it contains an `ofbiz-component.xml`); restart OFBiz to pick it up. +Then set an environment-specific admin password, start OFBiz, and log in to the +Manufacturing application. The component auto-registers (it contains an +`ofbiz-component.xml`); restart OFBiz to pick it up. ## Roadmap diff --git a/manufacturing-demo/build.gradle b/manufacturing-demo/build.gradle deleted file mode 100644 index b701b3a35..000000000 --- a/manufacturing-demo/build.gradle +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, 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. - */ -// manufacturing-demo is a self-contained Manufacturing + MRP demo/reference environment built -// entirely on stock OFBiz framework + applications data; it needs no external dependencies. diff --git a/manufacturing-demo/data/ManufacturingMrpDemoData.xml b/manufacturing-demo/data/ManufacturingMrpDemoData.xml index f012ebe95..4531f4ce0 100644 --- a/manufacturing-demo/data/ManufacturingMrpDemoData.xml +++ b/manufacturing-demo/data/ManufacturingMrpDemoData.xml @@ -24,9 +24,9 @@ under the License. readers=seed,seed-initial,manufacturingDemo Everything the evaluator sees is in THIS file - nothing is silently pulled from the - stock 'demo' data set. To keep it self-contained on stock entities, the company and a - login are copied/adapted (with attribution below) from OFBiz's own demo files; the rest - is the manufacturing scenario itself. + stock 'demo' data set. To keep it self-contained on stock entities, the company and + focused security grants are copied/adapted (with attribution below) from OFBiz's own + demo files; the rest is the manufacturing scenario itself. Scenario and manufacturing data: Swapnil Shah (Apache OFBiz cwiki, Manufacturing space). Product, routing and machine IDs are preserved verbatim so this demo lines up with the @@ -34,8 +34,7 @@ under the License. Sources for the copied bootstrap rows: * Company organization - applications/datamodel/data/demo/AccountingDemoData.xml - * Admin user / password - applications/datamodel/data/demo/SecurityExtDemoData.xml, - framework/security/data/PasswordSecurityDemoData.xml + * Admin user - applications/datamodel/data/demo/SecurityExtDemoData.xml * FULLADMIN group/member - framework/security/data/SecurityGroupDemoData.xml * Permission ids granted - defined in seed (e.g. applications/manufacturing/data/ManufacturingSecurityPermissionSeedData.xml); @@ -62,10 +61,11 @@ under the License. - - - - + + + + + @@ -73,8 +73,7 @@ under the License. - + diff --git a/manufacturing-demo/manifest.yaml b/manufacturing-demo/manifest.yaml index b5dbf0cdf..54eb2b70c 100644 --- a/manufacturing-demo/manifest.yaml +++ b/manufacturing-demo/manifest.yaml @@ -6,7 +6,7 @@ reader: manufacturingDemo scenario: Skateboard factory (standing manufacturing configuration) source: Swapnil Shah (Apache OFBiz cwiki, Manufacturing space) scope: "slice 1 — standing config (no inventory, forecasts, MRP runs or production costing results)" -selfContained: true # brings its own company + login; needs no stock 'demo' data +selfContained: true # brings its own company + security grants; needs no stock 'demo' data loadCommand: './gradlew "ofbiz --load-data readers=seed,seed-initial,manufacturingDemo"' company: @@ -14,10 +14,9 @@ company: roles: [INTERNAL_ORGANIZATIO, MANUFACTURER] login: userLoginId: admin - password: ofbiz group: FULLADMIN grantedPermissions: [OFBTOOLS_VIEW, CATALOG_VIEW, CATALOG_ADMIN, MANUFACTURING_VIEW, MANUFACTURING_CREATE, MANUFACTURING_UPDATE, MANUFACTURING_DELETE, MANUFACTURING_ADMIN, WORKEFFORTMGR_ADMIN, ASSETMAINT_ADMIN] - note: "Focused manufacturing-capable admin (manufacturing + the WorkEffort/AssetMaint families production runs require); not granted unrelated app permissions." + note: "Focused manufacturing-capable admin login and security grants without an embedded password; set the password using standard OFBiz admin-user setup for the target environment." facility: id: MFG_PLANT type: PLANT @@ -99,7 +98,7 @@ supplierProducts: quickstartSteps: - { action: "Get OFBiz and plugins", command: "git clone .../ofbiz-framework.git && ./gradlew pullAllPluginsSource", expectedResult: "plugins/manufacturing-demo/ exists" } - { action: "Load demo data", command: './gradlew "ofbiz --load-data readers=seed,seed-initial,manufacturingDemo"', expectedResult: "load completes; Company + admin login + MFG_PLANT exist" } - - { action: "Start OFBiz", command: "./gradlew ofbiz", expectedResult: "server reachable; login admin/ofbiz" } + - { action: "Set admin password and start OFBiz", command: "./gradlew ofbiz", expectedResult: "server reachable; admin can log in after password setup" } - { action: "See company and plant", screen: "Manufacturing/Catalog app", expectedResult: "MFG_PLANT and 10 products visible" } - { action: "View multi-level BOM", screen: "BOM for DCGAPSOSR12", expectedResult: "two-tier BOM (sub-assembly + finishing items)" } - { action: "View routing", screen: "Routing for DCGAPSOSR12", expectedResult: "tasks on machines AMC/LAM" } diff --git a/manufacturing-demo/ofbiz-component.xml b/manufacturing-demo/ofbiz-component.xml index 54e590a27..1dcc83e25 100644 --- a/manufacturing-demo/ofbiz-component.xml +++ b/manufacturing-demo/ofbiz-component.xml @@ -24,7 +24,7 @@ under the License.