mirror of
https://github.com/OPCFoundation/UA-.NETStandard.git
synced 2026-10-18 14:43:08 +08:00
15d0ce7bd5
# Description Implement OPC UA Part 10 Programs across `Opc.Ua.Core`/`Core.Types`, `Opc.Ua.Server`, and `Opc.Ua.Client`, reusing the existing state-machine, source-generation, node-management, auditing, and streaming-subscription infrastructure. - Add asynchronous provider-backed execution, standard controls, internal/autonomous transitions, generation checks, and nested-state activation/resumption. - Add checked creation/adoption, vendor Create adapters, deletion, recycling and instance limits, auto-delete, DI, and direct-construction paths. - Maintain ProgramDiagnostic2 and retained final results; publish captured intermediate results and concrete transition/audit events with access controls. - Add generated SDK models/proxies, typed client discovery and reads, event streams, and subscribe-before-call readiness handling. - Add unit, connected client/server, generated Annex A-style model, and NativeAOT coverage. Document usage and migration in `docs/Programs.md` and related guides. ### Compatibility and design decisions The linked Part 10 document is v1.05.00; namespace-zero definitions remain aligned with 1.05.07. Documentation distinguishes normative requirements from conflicting specification text and SDK conventions. - Correct state numbers to Halted=11, Ready=12, Running=13, Suspended=14. Generated subtypes retain inherited namespace-zero state/transition identifiers. - Managed Reset is Halted-to-Ready only. Preserve the existing low-level Reset-from-Suspended behavior for compatibility. - Preserve UInt32 limit types; use `UInt32.MaxValue` as a documented SDK unlimited convention. RecycleCount overflow reports BadOutOfRange without stopping unlimited execution. - In-memory default with injectable providers. Durable recovery, distributed execution/failover, and a production Annex A download engine are excluded. ## Checklist _Put an `x` in the boxes that apply. You can complete these step by step after opening the PR._ - [ ] I have signed the [CLA](https://opcfoundation.org/license/cla/ContributorLicenseAgreementv1.0.pdf) and read the [CONTRIBUTING](https://github.com/OPCFoundation/UA-.NETStandard/blob/master/CONTRIBUTING.md) doc. - [ ] I have added tests that prove my fix is effective or that my feature works and increased code coverage. - [x] I have added all necessary documentation. - [x] I have verified that my changes do not introduce (new) build or analyzer warnings. - [ ] I ran **all** tests locally using the **UA.slnx** solution against at least .net **framework** and .net **10**, and all passed. - [ ] I fixed **all** failing and flaky tests in the CI pipelines and **all** CodeQL warnings. - [ ] I have addressed **all** PR feedback received. Tests and focused coverage evidence are above; the combined tests/coverage checkbox remains open because a whole-repository coverage increase has not been established. CLA status, CI/CodeQL results, tracking-issue approval, and PR feedback are not asserted.
1.7 KiB
1.7 KiB
| 1 | DomainDownloadType | 1001 | ObjectType |
|---|---|---|---|
| 2 | TransferStateMachineType | 1002 | ObjectType |
| 3 | NamedProgramType | 1003 | ObjectType |
| 4 | NamedProgramType_Create | 6001 | Method |
| 5 | NamedProgramType_Create_InputArguments | 6002 | Variable |
| 6 | NamedProgramType_Create_OutputArguments | 6003 | Variable |
| 7 | DomainDownloadType_Start | 2001 | Method |
| 8 | DomainDownloadType_Start_InputArguments | 2002 | Variable |
| 9 | DomainDownloadType_Suspend | 2003 | Method |
| 10 | DomainDownloadType_Resume | 2004 | Method |
| 11 | DomainDownloadType_Halt | 2005 | Method |
| 12 | DomainDownloadType_ProgramDiagnostic | 2100 | Variable |
| 13 | DomainDownloadType_TransferStateMachine | 2200 | Object |
| 14 | DomainDownloadType_Running | 2300 | Object |
| 15 | DomainDownloadType_FinalResultData | 2400 | Object |
| 16 | DomainDownloadType_FinalResultData_BytesTransferred | 2401 | Variable |
| 17 | DomainDownloadType_FinalResultData_Completed | 2402 | Variable |
| 18 | DomainDownloadType_FinalResultData_ErrorCode | 2403 | Variable |
| 19 | TransferStateMachineType_Opening | 3001 | Object |
| 20 | TransferStateMachineType_Opening_StateNumber | 3011 | Variable |
| 21 | TransferStateMachineType_Sending | 3002 | Object |
| 22 | TransferStateMachineType_Sending_StateNumber | 3012 | Variable |
| 23 | TransferStateMachineType_Closing | 3003 | Object |
| 24 | TransferStateMachineType_Closing_StateNumber | 3013 | Variable |
| 25 | TransferStateMachineType_OpeningToSending | 4001 | Object |
| 26 | TransferStateMachineType_OpeningToSending_TransitionNumber | 4011 | Variable |
| 27 | TransferStateMachineType_SendingToSending | 4002 | Object |
| 28 | TransferStateMachineType_SendingToSending_TransitionNumber | 4012 | Variable |
| 29 | TransferStateMachineType_SendingToClosing | 4003 | Object |
| 30 | TransferStateMachineType_SendingToClosing_TransitionNumber | 4013 | Variable |
| 31 | TransferStateMachineType_LastTransition | 5001 | Variable |
| 32 | TransferStateMachineType_LastTransition_Number | 5002 | Variable |
| 33 | TransferStateMachineType_LastTransition_TransitionTime | 5003 | Variable |