Skip to content

SpecLens is a .NET solution for working with JDE objects and specifications through the native JDE C APIs.

License

Notifications You must be signed in to change notification settings

LongJohnBlackbeard/SpecLens

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Spec Lens

CI CodeQL Dependency Review Release codecov License: GPL v3

Spec Lens is a .NET solution for working with JDE objects and specifications through the native JDE C APIs. This repository is open source, so anyone interested is welcome to contribute.

The repo includes a reusable client library, test harnesses, and a desktop UI. The packaged application is distributed through releases today; in the future, it could be installed and updated via an installer or a similar deployment method.

Disclaimer: This project is not affiliated with, endorsed by, or sponsored by Oracle or JD Edwards.

Disclaimer: This project is in early development and bugs and missing features are expected. Any bugs, enhancments, missing features can be reported through the Issues tab.

Release tags and installation

  • Releases are created from Git tags in the format v* (example: v0.1.0 or v0.1.0-prototype.1).
  • The tag value (without v) is used as the release version for both app and library artifacts.
  • Tags containing - are published as prereleases.

SpecLens desktop app (win-x64)

  1. Open the Releases page and pick a tag.
  2. Download SpecLens-win-x64.zip.
  3. Optionally verify integrity with SpecLens-win-x64.sha256.
  4. Extract the zip and run Spec Lens.exe.

JdeClient.Core library package

  1. Open the same release tag and download JdeClient.Core-package.zip.
  2. Extract it. The zip contains:
  • JdeClient.Core.<version>.nupkg
  • JdeClient.Core.<version>.snupkg
  1. Add the extracted folder as a package source and install:
dotnet nuget add source "C:\path\to\extracted\JdeClient.Core" --name SpecLensLocal
dotnet add package JdeClient.Core --version <version> --source "C:\path\to\extracted\JdeClient.Core"

Features

  • Object catalog search (F9860)
  • Table and View Spec and Data browsing
  • Business function event rules browsing (NER and C business function source/header)
  • Object/spec location selection (Local or path code/Object Librarian override)
  • Custom viewport grid components (prioritizing speed over UI)
  • Grid Sorting, Sequencing, and Column Freezing
  • Dark/Light theme support
  • Custom Syntax Highlighting for ER
  • Optional C source syntax highlighting toggle
  • OMW solution/project export to .par (JdeClient.Core)

Future Features

  • Deeper cross-object event-rules navigation
  • Run Business Functions
  • ER Search
  • DD Search
  • UDC Search
  • Expanded Theme Customization
  • Expanded Syntax Highlighting Customization
  • Grid Export (Current Grid vs Query) into multiple formats.
  • Improved Tab Sequence Navigation
  • Customizable Hot Keys
  • and Much more

Requirements

  • Windows 64-bit (win-x64)
  • JDE Fat Client installed and logged in
  • activConsole.exe running

A note on file size

  • The Windows .exe is currently ~75 MB. This is expected because the app is published as self-contained.
  • Avalonia runs on .NET, and a self-contained publish bundles the .NET runtime and required framework libraries directly into the executable so users don’t need to install .NET separately.
  • As a result, most of the 75 MB (roughly 65–85%) is the bundled .NET runtime/framework, not the application code itself.

Associated Documents

Build and run

dotnet build SpecLens.sln

dotnet run --project SpecLens.Avalonia/SpecLens.Avalonia.csproj

dotnet run --project JdeClient.TestConsole/JdeClient.TestConsole.csproj

OMW solution/project export (PAR)

  • Programmatic usage is available via JdeClient.ExportProjectToParAsync (see JdeClient.Core/README.md).
  • Use JdeClient.TestConsole option 16 to test exporting an OMW project to a .par file.

Logging

Spec Lens has separate logs for the desktop app and the JDE client debug output. Both are disabled by default and can be enabled from the Settings window. See docs/LOGGING.md for how to enable logging, where files are written, and what to share.

Testing

Unit tests do not require a JDE runtime:

dotnet test JdeClient.Core.UnitTests/JdeClient.Core.UnitTests.csproj

Coverage (TUnit):

New-Item -ItemType Directory -Force TestResults\coverage | Out-Null
dotnet test JdeClient.Core.UnitTests/JdeClient.Core.UnitTests.csproj -c Release -- --results-directory $PWD\TestResults --coverage --coverage-output $PWD\TestResults\coverage\coverage.cobertura.xml --coverage-output-format cobertura --report-trx --report-trx-filename JdeClient.Core.UnitTests.trx

Coverage output (Cobertura XML) is written to TestResults/coverage/coverage.cobertura.xml at the repo root.

Create readable html report from the Cobertura XML

reportgenerator -reports:"TestResults\coverage\coverage.cobertura.xml" -targetdir:"TestResults\coverage-report" -reporttypes:"HtmlInline;TextSummary"

Open the html report

Start-Process "TestResults\coverage-report\index.html"

Complexity & CRAP standards

We use ReportGenerator's Risk Hotspots view (CRAP + Cyclomatic Complexity) to guide improvements.

  • Cyclomatic Complexity (CC): target ≤ 15 for new/modified methods; review/refactor when > 20.
  • CRAP score: target ≤ 30 for new/modified methods; review/refactor when > 50.
  • When touching an existing hotspot, add tests or refactor to reduce CC/CRAP where practical.

Integration tests require the JDE runtime and are manual-only (not run in CI workflows):

dotnet test JdeClient.Core.IntegrationTests/JdeClient.Core.IntegrationTests.csproj

Repository layout

  • JdeClient.Core: core library that wraps JDE native APIs
  • JdeClient.TestConsole: interactive console harness
  • SpecLens.Avalonia: desktop UI
  • JdeClient.Core.UnitTests: unit tests
  • JdeClient.Core.IntegrationTests: integration tests that require JDE runtime
  • JdeClient.Core.XmlEngineTestConsole: XML engine test harness
  • ViewportGrid.Core and ViewportGrid.Data: custom grid components

Security

See SECURITY.md for reporting guidance. This project does not store secrets or connect directly to databases. All queries and data access run through the JDE C APIs. Maintainers: see docs/REPOSITORY_SETUP.md for required GitHub security settings.

Contributing

See CONTRIBUTING.md for workflow and requirements.

License

Licensed under the GNU GPLv3. See LICENSE.

About

SpecLens is a .NET solution for working with JDE objects and specifications through the native JDE C APIs.

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages