Giter VIP home page Giter VIP logo

package-explorer's People

Contributors

alexanderwollbrink avatar aorzelskigh avatar atextor avatar barnstee avatar birgitboss avatar bischof-keb avatar br-iosb avatar broessl avatar dependabot[bot] avatar festo-i40 avatar freezor avatar g1zzm0 avatar harishpakala avatar heidese-sick avatar juileetikekar avatar kaz040 avatar krahlro-sick avatar logmanoriginal avatar martafullen avatar mhrimaz avatar michaelhoffmeisterfesto avatar michahofft avatar mmarseu avatar mristin avatar muba00 avatar rosseboe avatar saidta avatar swagnerse avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

package-explorer's Issues

OPC UA cannot model Entities

OPC UA cannot model Entities

If you try aasx server with parameter -opc, or from AASX Package Explorer export as OPC UA Nodeset.XML, Entities are not created.
image

VS

image

Plugins do not show in AASX

Hello,

I can see the list of plugins in its folder when I download the zip file.
But, when I open the AASX explorer, I cannot see the exact list. I see only some of plugins.

Would you please let me know if I need to fix something?

Bests,
Mahdi

Uncaught Exception when opening AAS from .json

Hello Team,

first: thanks for all your hard and brilliant work around AAS!

I tried to open an AAS from a .json, but run in an uncaught exception which results in a program termination.

The .json:
{ "assetAdministrationShells": [ { "submodels": [ { "keys": [ { "idType": "Custom", "local": true, "type": "Submodel", "value": "e61f0214886a6c4faf69f24210bdd45c08331718" } ] }, { "keys": [ { "idType": "Custom", "local": true, "type": "Submodel", "value": "edc064197e98cedc66f1218ff363995c70b7c7d1" } ] }, { "keys": [ { "idType": "Custom", "local": true, "type": "Submodel", "value": "974d49ba4c750ff5398d544ea1cf8788876744d3" } ] }, { "keys": [ { "idType": "Custom", "local": true, "type": "Submodel", "value": "76908e13d522d364dd3b252ac4b6ec3475003db8" } ] } ], "asset": { "keys": [ { "idType": "Custom", "local": true, "type": "Asset", "value": "b0d81a46dc6c67d7659163b259ec70e1b9420ef8" } ] }, "identification": { "id": "4308e5389e37a0fa24940f6da51a3f4a6e17b1d7", "idType": "Custom" }, "idShort": "TestSystemUnitClass", "modelType": { "name": "AssetAdministrationShell" } } ], "submodels": [ { "semanticId": { "keys": [ { "idType": "IRI", "local": true, "type": "ConceptDescription", "value": "http://sap.com/dsc/i40/sm/identificationdata" } ] }, "submodelElements": [ { "idShort": "Manufacturer", "semanticId": { "keys": [ { "idType": "IRDI", "local": true, "type": "ConceptDescription", "value": "0112/2///61987#ABA565#006" } ] }, "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "Test Manufacturer", "valueType": "string" }, { "idShort": "ManufacturerURI", "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "http://www.example.com/manufacturerURI", "valueType": "string" }, { "idShort": "DeviceClass", "semanticId": { "keys": [ { "idType": "IRDI", "local": true, "type": "ConceptDescription", "value": "0112/2///61987#ABA566#005" } ] }, "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "1234", "valueType": "string" }, { "idShort": "Model", "semanticId": { "keys": [ { "idType": "IRDI", "local": true, "type": "ConceptDescription", "value": "0112/2///61987#ABA567#006" } ] }, "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "Test Model", "valueType": "string" }, { "idShort": "ProductCode", "semanticId": { "keys": [ { "idType": "IRDI", "local": true, "type": "ConceptDescription", "value": "0112/2///61987#ABA300#005" } ] }, "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "Test ProductCode", "valueType": "string" }, { "idShort": "OrderCode", "semanticId": { "keys": [ { "idType": "IRDI", "local": true, "type": "ConceptDescription", "value": "0112/2///61987#ABA950#006" } ] }, "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "Test OrderCode", "valueType": "string" }, { "idShort": "HardwareRevision", "semanticId": { "keys": [ { "idType": "IRDI", "local": true, "type": "ConceptDescription", "value": "0112/2///61987#ABA926#005" } ] }, "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "1.0.0", "valueType": "string" }, { "idShort": "SoftwareRevision", "semanticId": { "keys": [ { "idType": "IRDI", "local": true, "type": "ConceptDescription", "value": "0112/2///61987#ABA302#004" } ] }, "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "1.0.0", "valueType": "string" }, { "idShort": "SerialNumber", "semanticId": { "keys": [ { "idType": "IRDI", "local": true, "type": "ConceptDescription", "value": "0112/2///61987#ABA951#006" } ] }, "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "TestSerialNumber1234", "valueType": "string" }, { "idShort": "FabricationNumber", "semanticId": { "keys": [ { "idType": "IRDI", "local": true, "type": "ConceptDescription", "value": "0112/2///61987#ABB062#005" } ] }, "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "TestFabricationNumber1234", "valueType": "string" }, { "idShort": "ProductInstanceURI", "semanticId": { "keys": [ { "idType": "IRDI", "local": true, "type": "ConceptDescription", "value": "0112/2///61987#ABN591#001" } ] }, "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "http://www.example.com/productInstanceURI", "valueType": "string" } ], "identification": { "id": "e61f0214886a6c4faf69f24210bdd45c08331718", "idType": "Custom" }, "idShort": "IdentificationData", "modelType": { "name": "Submodel" } }, { "semanticId": { "keys": [ { "idType": "IRI", "local": true, "type": "ConceptDescription", "value": "http://sap.com/dsc/i40/sm/generaltechnicaldata" } ] }, "submodelElements": [ { "idShort": "AmbientTemperature", "semanticId": { "keys": [ { "idType": "IRDI", "local": true, "type": "ConceptDescription", "value": "0112/2///62683#ACE440#001" } ] }, "kind": "Instance", "modelType": { "name": "SubmodelElementCollection" }, "category": "PARAMETER", "value": [ { "idShort": "TemperatureMin", "semanticId": { "keys": [ { "idType": "IRDI", "local": true, "type": "ConceptDescription", "value": "0112/2///61987#ABA621#007" } ] }, "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "-273", "valueType": "integer" }, { "idShort": "TemperatureMax", "semanticId": { "keys": [ { "idType": "IRDI", "local": true, "type": "ConceptDescription", "value": "0112/2///61987#ABA623#007" } ] }, "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "100", "valueType": "integer" } ] }, { "idShort": "IPCode", "semanticId": { "keys": [ { "idType": "IRDI", "local": true, "type": "ConceptDescription", "value": "0112/2///61987#ABA558#006" } ] }, "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "Test IPCode", "valueType": "string" }, { "idShort": "Material", "semanticId": { "keys": [ { "idType": "IRDI", "local": true, "type": "ConceptDescription", "value": "0112/2///61987#ABA158#004" } ] }, "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "Test Material", "valueType": "string" }, { "idShort": "Weight", "semanticId": { "keys": [ { "idType": "IRDI", "local": true, "type": "ConceptDescription", "value": "0112/2///61987#ABA553#006" } ] }, "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "123.1", "valueType": "float" }, { "idShort": "Height", "semanticId": { "keys": [ { "idType": "IRDI", "local": true, "type": "ConceptDescription", "value": "0112/2///61987#ABA574#006" } ] }, "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "15", "valueType": "integer" }, { "idShort": "Width", "semanticId": { "keys": [ { "idType": "IRDI", "local": true, "type": "ConceptDescription", "value": "0112/2///61987#ABA573#006" } ] }, "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "18", "valueType": "integer" }, { "idShort": "Length", "semanticId": { "keys": [ { "idType": "IRDI", "local": true, "type": "ConceptDescription", "value": "0112/2///61987#ABA640#006" } ] }, "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "14", "valueType": "integer" } ], "identification": { "id": "edc064197e98cedc66f1218ff363995c70b7c7d1", "idType": "Custom" }, "idShort": "GeneralTechnicalData", "modelType": { "name": "Submodel" } }, { "semanticId": { "keys": [ { "idType": "IRI", "local": true, "type": "ConceptDescription", "value": "http://sap.com/dsc/i40/sm/commercialdata" } ] }, "submodelElements": [ { "idShort": "PackagingAndTransportation", "kind": "Instance", "modelType": { "name": "SubmodelElementCollection" }, "category": "PARAMETER", "value": [ { "idShort": "GTIN", "semanticId": { "keys": [ { "idType": "IRDI", "local": true, "type": "ConceptDescription", "value": "0112/2///61987#ABA587#005" } ] }, "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "TestGlobalTradeItemNumber1234", "valueType": "string" }, { "idShort": "CustomsTariffNumber", "semanticId": { "keys": [ { "idType": "IRDI", "local": true, "type": "ConceptDescription", "value": "0112/2///61987#ABI442#001" } ] }, "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "1234", "valueType": "integer" }, { "idShort": "CountryOfOrigin", "semanticId": { "keys": [ { "idType": "IRDI", "local": true, "type": "ConceptDescription", "value": "0112/2///61987#ABJ603#001" } ] }, "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "TestCountryOfOriginDE", "valueType": "string" } ] }, { "idShort": "ProductDetails", "kind": "Instance", "modelType": { "name": "SubmodelElementCollection" }, "category": "PARAMETER", "value": [ { "idShort": "DescriptionShort", "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "TestProductDetailsDescriptionShort", "valueType": "string" }, { "idShort": "DescriptionLong", "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "TestProductDetailsDescriptionLong", "valueType": "string" }, { "idShort": "InternationalPID", "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "TestInternationalPID", "valueType": "string" }, { "idShort": "ManufacturerPID", "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "TestManufacturerPID", "valueType": "string" }, { "idShort": "SpecialTreatmentClass", "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "TestSpecialTreatmentClass1", "valueType": "string" }, { "idShort": "Keyword", "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "TestKeyword1", "valueType": "string" }, { "idShort": "Remarks", "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "TestRemarks", "valueType": "string" } ] }, { "idShort": "ProductOrderDetails", "kind": "Instance", "modelType": { "name": "SubmodelElementCollection" }, "category": "PARAMETER", "value": [ { "idShort": "OrderUnit", "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "TestProductOrderDetailsOrderUnit", "valueType": "string" }, { "idShort": "ContentUnit", "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "TestProductOrderDetailsContentUnit", "valueType": "string" }, { "idShort": "PriceQuantity", "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "TestProductOrderDetailsPriceQuantity", "valueType": "string" }, { "idShort": "QuantityMin", "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "1.3", "valueType": "float" }, { "idShort": "QuantityInterval", "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "2.1", "valueType": "float" }, { "idShort": "QuantityMax", "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "QuantityMax is a string", "valueType": "float" }, { "idShort": "PackingUnits", "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "TestProductOrderDetailsPackingUnits", "valueType": "string" }, { "idShort": "PackingSize", "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "TestProductOrderDetailsPackingSize", "valueType": "string" } ] }, { "idShort": "ProductPriceDetails", "kind": "Instance", "modelType": { "name": "SubmodelElementCollection" }, "category": "PARAMETER", "value": [ { "idShort": "ValidStartDate", "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "2020-01-01", "valueType": "date" }, { "idShort": "VaildEndDate", "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "2021-01-01", "valueType": "date" }, { "idShort": "ProductPrice", "kind": "Instance", "modelType": { "name": "SubmodelElementCollection" }, "category": "PARAMETER", "value": [ { "idShort": "PriceAmount", "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "TestPriceAmount", "valueType": "string" }, { "idShort": "PriceCurrency", "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "TestPriceCurrency", "valueType": "string" }, { "idShort": "Tax", "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "TestProductPriceDetailsTax", "valueType": "string" }, { "idShort": "PriceFactor", "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "TestPriceFactor", "valueType": "string" }, { "idShort": "LowerBound", "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "TestLowerBound", "valueType": "string" }, { "idShort": "Territory", "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "TestTerritory1", "valueType": "string" } ] } ] }, { "idShort": "ManufacturerDetails", "kind": "Instance", "modelType": { "name": "SubmodelElementCollection" }, "category": "PARAMETER", "value": [ { "idShort": "Name", "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "TestManufacturerManufaturerDetails", "valueType": "string" }, { "idShort": "Address1", "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "TestManufacturerAddress1", "valueType": "string" }, { "idShort": "Address2", "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "TestManufacturerAddress2", "valueType": "string" }, { "idShort": "ZipCode", "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "TestManufacturerZipCode", "valueType": "string" }, { "idShort": "City", "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "TestManufacturerCity", "valueType": "string" }, { "idShort": "Country", "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "TestManufacturerCountry", "valueType": "string" }, { "idShort": "ContactMail", "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "TestManufacturerContactMail", "valueType": "string" }, { "idShort": "ContactPhone", "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "TestManufacturerContactPhone", "valueType": "string" }, { "idShort": "Website", "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "TestManufacturerWebsite", "valueType": "string" } ] } ], "identification": { "id": "974d49ba4c750ff5398d544ea1cf8788876744d3", "idType": "Custom" }, "idShort": "CommercialData", "modelType": { "name": "Submodel" } }, { "semanticId": { "keys": [ { "idType": "IRI", "local": true, "type": "ConceptDescription", "value": "http://sap.com/dsc/i40/sm/parameterdata" } ] }, "submodelElements": [ { "idShort": "ParameterDataCustomAttribute", "kind": "Instance", "modelType": { "name": "Property" }, "category": "PARAMETER", "value": "Value of my custom attribute in ParameterData", "valueType": "string" } ], "identification": { "id": "76908e13d522d364dd3b252ac4b6ec3475003db8", "idType": "Custom" }, "idShort": "ParameterData", "modelType": { "name": "Submodel" } } ], "conceptDescriptions": [ ], "assets": [ { "kind": "Type", "identification": { "id": "b0d81a46dc6c67d7659163b259ec70e1b9420ef8", "idType": "Custom" }, "idShort": "TestSystemUnitClass", "modelType": { "name": "Asset" } } ] }

The error occurs in AdminShellConverter.cs
Newtonsoft.Json.JsonSerializationException: 'Error converting value "string" to type 'AdminShellNS.AdminShellV20+JsonValueTypeCast'. Path 'valueType', line 97, position 41.'

Newtonsoft.Json.JsonSerializationException
HResult=0x80131500
Message=Error converting value "string" to type 'AdminShellNS.AdminShellV20+JsonValueTypeCast'. Path 'valueType', line 97, position 41.
Source=Newtonsoft.Json
StackTrace:
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.EnsureType(JsonReader reader, Object value, CultureInfo culture, JsonContract contract, Type targetType)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.SetPropertyValue(JsonProperty property, JsonConverter propertyConverter, JsonContainerContract containerContract, JsonProperty containerProperty, JsonReader reader, Object target)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Populate(JsonReader reader, Object target)
at AdminShellNS.AdminShellConverters.JsonAasxConverter.ReadJson(JsonReader reader, Type objectType, Object existingValue, JsonSerializer serializer) in C:\P4\AAS\aasx\src\AasxCsharpLibrary\AdminShellConverters.cs:line 85
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.DeserializeConvertable(JsonConverter converter, JsonReader reader, Type objectType, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateList(IList list, JsonReader reader, JsonArrayContract contract, JsonProperty containerProperty, String id)

This exception was originally thrown at this call stack:
[External Code]

Inner Exception 1:
ArgumentException: Could not cast or convert from System.String to AdminShellNS.AdminShellV20+JsonValueTypeCast.


THANKS FOR YOUR HELP and kind regards,
Rüdiger

Not able to find appropriate ConceptDescriptions. Aborting

Is your feature request related to a problem? Please describe.
After adding the Nameplate submodel and Identification submodel via Plugins menu to my AAS, I wanted to add the related ConceptDescriptions via Fix missing CDs button. However, I have got the following error.
[AasxPluginGenericForms] Not able to find appropriate ConceptDescriptions in the GeneralForm option records. Aborting.

Describe the solution you'd like
The related ConceptDescriptions to be added via Fix missing CDs button.

Clickable links

At the moment when links are being used in the AASX Package Explorer i have to manually copy and paste them.
Is it possible to make the links clickable in the AASX Package Explorer?

DataShell

XML Export does not work

I try to export my AAS as a xml file. I use for that Export.. -> Export OPC UA nodeset2.xml (via UA server plug-in).
But when i try to execute that command I get error that a .dll file "libuv" was not found.

image

I do not know what to do, with that information or how to fix it. Is there an other way to exort to xml? Or do i need to add a file to be able to do that?

I use the Version 1.9.8.3 from Mon 08/31/2020.

Kind regards
Chris

Support GUIDs in id generator templates

Hi there,

in the options file, one can set templates for how ids are generated:

  "TemplateIdAas": "https://example.com/ids/aas/DDDD_DDDD_DDDD_DDDD",
  "TemplateIdAsset": "https://example.com/ids/asset/DDDD_DDDD_DDDD_DDDD",
  "TemplateIdSubmodelInstance": "https://example.com/ids/sm/DDDD_DDDD_DDDD_DDDD",
  "TemplateIdSubmodelTemplate": "https://example.com/ids/sm/DDDD_DDDD_DDDD_DDDD",
  "TemplateIdConceptDescription": "https://example.com/ids/cd/DDDD_DDDD_DDDD_DDDD",

In the enterprise software world, especially in a .NET context, it is best practice to use UUIDs or, in particular, Microsoft's GUIDs for ids.

Hence, it would be great, if you could extend the method Options.GenerateIdAccordingTemplate so that templates such as

  "TemplateIdAas": "https://example.com/ids/aas/G",

are accepted and generate an id like

https://example.com/ids/aas/3ff9a07e1b0f452e803aecb4a210ab86

using the function call Guid.NewGuid().ToString("N").

Submodel Generic Forms edit form gives incorrect properties

Describe the bug
I exported several custom submodels via the Export to Generic Forms options, such that I have several .add-options.json files. When I load a Generic Form into a new AAS file, the edit form to insert values contains the wrong properties. Each Generic Form I load contains the same insert options in its form, taken from one of the Generic Forms. So, of the various Generic Forms, only one gives the correct properties in its Edit form.

To Reproduce
Steps to reproduce the behavior:

  1. Add the following two files to the Generic Forms Plugin. (remove the .txt suffix, which was necessary to upload here)
    abc.add-options.json.txt
    xyz.add-options.json.txt
  2. Open a new AAS, and create a submodel for both Generic Forms.
  3. The edit form for both submodels will contain properties 'a' and 'b'.

Expected behavior
Correct behaviour would be that one edit form contains properties 'x' and 'y', while the other contains properties 'a' and 'b'.

Screenshots
In the screenshot you can see that the loaded Generic Forms edit form shows attributes a and b, whereas the submodel properties have idshort 'x' and 'y'. When I enter values in the edit form, properties with idshort 'a' and 'b' are added to the submodel "test1".
image

Additional context
It seems it is related to the form tag*. I also wonder if this may be intended behaviour, but I should enter additional data to differentiate between the various Generic Forms.

Also, the behaviour is related to the name of the Generic Forms .add-options.json file. If I were to add a third Generic Forms file called aaa.add-options.json, then the properties would be drawn from that file. It seems the properties shown in the Edit form are taken from the alphabetically first Generic Form ordered by filename. Somehow, the standard submodels are excluded even those filesnames are alphabetically first.

  • By the way, how is the form tag decided? In this case it's TBD, as in "to be decided"?

Desktop (please complete the following information):

  • OS: Windows
  • Version: 2020-12-03 alpha

Import missing ConceptDescriptions from eCl@ss

Describe the bug
got an error:
Error: While in user callback (modify repo lambda): Could not find a part of the path 'C:\AasxPackageExplorer 2021-12-03.alpha\eclass'. at at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)

To Reproduce
Steps to reproduce the behavior:

  1. Go to 'a Property of a submodel, that is added via plugins' [e.g. Nameplate]
  2. Click on 'Import missing' button that is in front of ConceptDescriptions from eCl@ss
  3. See the error in the bottom of the windows

Expected behavior
To assign/import the related eCl@ss

Screenshots
import ConceptDescriptions from elCass2

Desktop (please complete the following information):

  • OS: [Windows 10 Pro]
  • Browser [chrome]
  • Version [ 87.0.4280.141]

Additional context
The correct IRDI of the property in eCl@ss exist in SemanticId.

Getting a AASX W JSON format is NOT possible

Situation:

I use the AASX Package Explorer 2021-02-18.alpha version and work on a 64-bit Windows 7 and 10 machine. I tried to convert any AASX XML sample to an AASX W JSON format, given the error code shown below.

How should I get this format? I tried with all the examples on the server (http://www.admin-shell-io.com/samples/), but the same error and the XML format are still not changed. Even creating a new model with AASX W JSON format is not possible.

Expected results:
I expect to get an AASX in a W JSON format

Actual Results:
When saving the AASX file to AASX W JSON format, a file with XML format is saved, and an error message is returned in the log [1]

[1]Error: while backing up AASX local file: D:\Users\salazar\Desktop\Luis Cruz TUM\Software 2021\AAS software tools\model tests\model5.aasx buffered to: C:\Users\TUM\AppData\Local\Temp\tmpD052.aasx: While temporarily close and re-open AASX C:\Users\TUM\AppData\Local\Temp\tmpD052.aasx at \AdminShellPackageEnv.cs:line 911 gave: Could not find a part of the path 'D:\Users\salazar\Desktop\Luis Cruz TUM\Software 2021\AAS software tools\backup\backup000.aasx'. While temporarily close and re-open AASX C:\Users\TUM\AppData\Local\Temp\tmpD052.aasx at \AdminShellPackageEnv.cs:line 911 gave: Could not find a part of the path 'D:\Users\salazar\Desktop\Luis Cruz TUM\Software 2021\AAS software tools\backup\backup000.aasx'. at at AdminShellNS.AdminShellPackageEnv.TemporarilySaveCloseAndReOpenPackage(Action lambda) in D:\a\aasx-package-explorer\aasx-package-explorer\src\AasxCsharpLibrary\AdminShellPackageEnv.cs:line 915
at AasxWpfControlLibrary.PackageCentral.PackageContainerBuffered.BackupInDir(String backupDir, Int32 maxFiles, BackupType backupType) in D:\a\aasx-package-explorer\aasx-package-explorer\src\AasxWpfControlLibrary\PackageCentral\PackageContainerBuffered.cs:line 105.

Copy error for AAS copy recursively

If you want to copy an AAS recursively, the explorer creates a new entry with the same count of sub models (based on the source AAS) but the addresses and the name is the every time the same.

grafik

Steps to reproduce the behavior:

  1. choosing the "Env "AdminstrationShells""
  2. Click on 'copy recursively'
  3. Select an existing AAS
  4. See the incorecct result in the picture

Expected behavior
A new entry for an AAS with the same sub model names and different addresses

Support for Enum Values

Is your feature request related to a problem? Please describe.
Enumerated data points which allow a limited/predefined list of possible values are pretty common in devices and applications. And Concept Description with Enumerations are supported by the Metamodel of the AAS since version 2.0. However, there is not support in AASX PE for such data points.

Describe the solution you'd like

  • Ability to create enum values manually in AASX PE.
  • Automatic retrieval and concept description of enum values.

Describe alternatives you've considered
As a quick initial step, the valueList attribute (that is defined by IEC61360 ) can be added to the Concept Descriptions with Template IEC61360

Additional context
valueList in DataSpecificationIEC61630:
enum

Display of Submodels in a XML-file which are not defined by local=true in the Reference is missing

We tried to read our example xml files with the aasx package explorer but it does not work correctly. It only shows the AAS but not the Submodels. The error report gives no concrete message only, that the references to the submodels are missing. We checked our file and do not find any problems.

Here is the link to our file:
https://git.rwth-aachen.de/acplt/pyi40aas/-/blob/master/test/compliance_tool/files/test_demo_full_example.xml

Here is screenshot of the aasx package explorer with the loaded xml file:
image

Containing Security aspects of an Object (asset, submodel, etc)

Is your feature request related to a problem? Please describe.
Not specifically.

Describe the solution you'd like
One of the important aspects of a manufacturing object is its security aspect. Fortunately, this aspect is now specified in the details AAS Version 3.0RC01, but not implementable in the AASX Tool. Is there any hope that we would have this feature in the near future?

Describe alternatives you've considered
The security aspect of a manufacturing object has not defined a submodel but as the Security-related attributes of AAS which contained attributes such as Access Control Policy, Permission rules, etc.

Additional context
You can find more information regarding the security aspect of an asset in chapter 5 of the details AAS Version 3.0RC01 specification.

Error when opening aasx file

Describe the bug
I had been working on various .aasx files, adding several submodels with properties, collections, and reference elements, and saving and switching between .aasx files. At the moment, I cannot open one of my files because it gives the following error. I included the complete log at the end of this report.

Error: When auto-loading <path\to>\CrashedAASX.aasx:
While reading the <path\to>\CrashedAASX.aasx (and indirectly over <path\to>\AppData\Local\Temp\tmpCAB.aasx) at gave:
While reading spec from the <path\to>\CrashedAASX.aasx (and indirectly over <path\to>\AppData\Local\Temp\tmpCAB.aasx) at gave:
Type error for XML file! at
at AdminShellNS.AdminShellPackageEnv.LoadPackageAasx(String fn, String fnToLoad)
at AdminShellNS.AdminShellPackageEnv.Load(String fn, Boolean indirectLoadSave)
at AasxPackageExplorer.MainWindow.LoadPackageFromFile(String fn)
at AasxPackageExplorer.MainWindow.Window_Loaded(Object sender, RoutedEventArgs e).
Stacktrace: at AdminShellNS.AdminShellPackageEnv.LoadPackageAasx(String fn, String fnToLoad)
at AdminShellNS.AdminShellPackageEnv.Load(String fn, Boolean indirectLoadSave)
at AasxPackageExplorer.MainWindow.LoadPackageFromFile(String fn)
at AasxPackageExplorer.MainWindow.Window_Loaded(Object sender, RoutedEventArgs e)

Manually unzipping (with 7-Zip) the aasx file gives a data error for the internal xml file. It has a size of 0kb when unzipped.

To Reproduce
Sadly, I have not been able to reproduce this bug by various combinations of opening and re-opening some files, so I'm uncertain what could have been the problem. I included the aasx file here, in case you can have a more detailed look.
CrashedAASX.zip

Expected behavior
I expect to open the aasx file without throwing errors.

Desktop (please complete the following information):

  • OS: Windows
  • Version Package Explorer: 2020-12-03 alpha

Additional context
Full log report:

Application startup.
The default options are expected in the JSON file: C:...\aasx-package-explorer.2020-12-03.alpha\AasxPackageExplorer\AasxPackageExplorer.options.json
Loading the default options from: C:...\aasx-package-explorer.2020-12-03.alpha\AasxPackageExplorer\AasxPackageExplorer.options.json
Direct request to load AASX C:...\CrashedAASX.aasx ..
Parsing 1 command-line option(s)...
Command-line option: 0: C:...\CrashedAASX.aasx
Searching for the plugins in the plugin directory: C:...\aasx-package-explorer.2020-12-03.alpha\AasxPackageExplorer.\plugins
Found 9 plugin(s) in the plugin directory: C:...\aasx-package-explorer.2020-12-03.alpha\AasxPackageExplorer.\plugins
Loading and activating 9 plugin(s)...
Trying to load and activate 9 plug-in(s)...
Trying to load a DLL: C:...\aasx-package-explorer.2020-12-03.alpha\AasxPackageExplorer.\plugins\AasxPluginBomStructure\AasxPluginBomStructure.dll
.. adding plugin AasxPluginBomStructure
Trying to load a DLL: C:...\aasx-package-explorer.2020-12-03.alpha\AasxPackageExplorer.\plugins\AasxPluginDocumentShelf\AasxPluginDocumentShelf.dll
.. adding plugin AasxPluginDocumentShelf
Trying to load a DLL: C:...\aasx-package-explorer.2020-12-03.alpha\AasxPackageExplorer.\plugins\AasxPluginExportTable\AasxPluginExportTable.dll
.. adding plugin AasxPluginExportTable
Trying to load a DLL: C:...\aasx-package-explorer.2020-12-03.alpha\AasxPackageExplorer.\plugins\AasxPluginGenericForms\AasxPluginGenericForms.dll
.. adding plugin AasxPluginGenericForms
Trying to load a DLL: C:...\aasx-package-explorer.2020-12-03.alpha\AasxPackageExplorer.\plugins\AasxPluginMtpViewer\AasxPluginMtpViewer.dll
.. adding plugin AasxPluginMtpViewer
Trying to load a DLL: C:...\aasx-package-explorer.2020-12-03.alpha\AasxPackageExplorer.\plugins\AasxPluginTechnicalData\AasxPluginTechnicalData.dll
.. adding plugin AasxPluginTechnicalData
Trying to load a DLL: C:...\aasx-package-explorer.2020-12-03.alpha\AasxPackageExplorer.\plugins\AasxPluginUaNetClient\AasxPluginUaNetClient.dll
.. adding plugin AasxPluginOpcUaClient
Trying to load a DLL: C:...\aasx-package-explorer.2020-12-03.alpha\AasxPackageExplorer.\plugins\AasxPluginUaNetServer\AasxPluginUaNetServer.dll
.. adding plugin Net46AasxServerPlugin
Trying to load a DLL: C:...\aasx-package-explorer.2020-12-03.alpha\AasxPackageExplorer.\plugins\AasxPluginWebBrowser\AasxPluginWebBrowser.dll
.. adding plugin AasxPluginWebBrowser
Loading aasx file repository ..........\Sample_AAS\aasxrepo-new.json ..
File not found when auto-loading aasx file repository ..........\Sample_AAS\aasxrepo-new.json
Application started ..
Error: When auto-loading C:...\CrashedAASX.aasx: While reading the C:...\CrashedAASX.aasx (and indirectly over C:...\AppData\Local\Temp\tmpCAB.aasx) at gave: While reading spec from the C:...\CrashedAASX.aasx (and indirectly over C:...\AppData\Local\Temp\tmpCAB.aasx) at gave: Type error for XML file! at at AdminShellNS.AdminShellPackageEnv.LoadPackageAasx(String fn, String fnToLoad)
at AdminShellNS.AdminShellPackageEnv.Load(String fn, Boolean indirectLoadSave)
at AasxPackageExplorer.MainWindow.LoadPackageFromFile(String fn)
at AasxPackageExplorer.MainWindow.Window_Loaded(Object sender, RoutedEventArgs e).
Stacktrace: at AdminShellNS.AdminShellPackageEnv.LoadPackageAasx(String fn, String fnToLoad)
at AdminShellNS.AdminShellPackageEnv.Load(String fn, Boolean indirectLoadSave)
at AasxPackageExplorer.MainWindow.LoadPackageFromFile(String fn)
at AasxPackageExplorer.MainWindow.Window_Loaded(Object sender, RoutedEventArgs e)
[AasxPluginBomStructure] ListActions() called
[AasxPluginBomStructure] InitPlugin() called with args =
[AasxPluginDocumentShelf] ListActions() called
[AasxPluginDocumentShelf] InitPlugin() called with args =
[AasxPluginExportTable] ListActions() called
[AasxPluginExportTable] InitPlugin() called with args =
[AasxPluginGenericForms] ListActions() called
[AasxPluginGenericForms] InitPlugin() called with args =
[AasxPluginMtpViewer] GetPluginName() = MtpViewer
[AasxPluginMtpViewer] ListActions() called
[AasxPluginMtpViewer] InitPlugin() called with args =
[AasxPluginMtpViewer] GetPluginName() = MtpViewer
[AasxPluginTechnicalData] ListActions() called
[AasxPluginTechnicalData] InitPlugin() called with args =
[AasxPluginOpcUaClient] ListActions() called
[Net46AasxServerPlugin] GetPluginName() = Net46AasxServerPlugin
[Net46AasxServerPlugin] ListActions() called
[Net46AasxServerPlugin] InitPlugin() called with args =
[AasxPluginWebBrowser] ListActions() called
[AasxPluginWebBrowser] InitPlugin() called with args =

Spec V3.x support in the PackageExplorer?

Hello,

What is the AAS spec version currently used in the package explorer? Are there any plans/ current work in progress to support V3.x?
Does the export JSON function uses this spec or something else? @mristin

Thanks.

Improve combo boxes for Category and CD / dataValue

Let combobox box of category by dependent on the element type

For data elements (Property, MultiLanguaguageProperty, Range etc.) except for files and blobs:
CONSTANT, PARAMETER, VARIABLE
For Concept descriptions IEC61360:
VALUE, PROPERTY, REFERENCE, DOCUMENT, CAPABILITY, RELATIONSHIP, COLLECTION, ENTITY, FUNCTION, EVENT, APPLICATION_CLASS, QUALIFIER, VIEW

Let combobox for dataType of Concept Description

  • sorted alphabetically (in combobox, in original order in the enums)
  • following values

DATE
STRING
STRING_TRANSLATABLE
INTEGER_MEASURE
INTEGER_COUNT
INTEGER_CURRENCY
REAL_MEASURE
REAL_COUNT
REAL_CURRENCY
BOOLEAN
URL
RATIONAL
RATIONAL_MEASURE
TIME
TIMESTAMP

and extend with (as soon as Specification of Details of AAS is updated):

BINARY
IRDI,
URI (ECLASS hat URL)
HTML5
ICID (The data type ICID_STRING_TYPE may be used for values conforming to IRDI_STRING_TYPE, where the delimiter between RAI and DI is “#” while the delimiter between DI and VI is confined to “##”.)
ISO_29002_IRDI (The data type ISO_29002_IRDI_TYPE may be used for values containing a global identifier that identifies an administrated item in a registry. The structure of this identifier complies with identifier syntax defined in ISO/TS 29002-5. The identifier shall fulfill the requirements specified in ISO/TS 29002-5 for an "international registration data identifier" (IRDI)).

Close this ticket only if:

  • combo boxes are updated
  • enums in JSON / XML are extended correspondingly

Readme: there is no chapter "Get started" - "Quick Start"?

Source: readme.md

In Contributing section, the guide is "If you want to contribute in code, see Section "Getting started"."

I assume "Getting started" was renamed to "Quick Start" and this is the section you are referring to? At least I do not find a section "Getting started".

No open AASX File to be saved

Describe the bug
After copy recursivly with suppl. files, i can't save the AASX-File.

To Reproduce
Steps to reproduce the behavior:

  1. Creating a new File including saving it.
  2. Open Auxiliary AASX-File.
  3. Copy recursivly with supplementary files a complete AAS.
  4. Finding everything what i could hope for: Every Submodel, every Concept Description and Supp. Files are in "(add pending)" and can be found in the "temp" folder.
  5. Closing the Auxiliary
  6. Saving the file to add the supplementary files (and, of course saving it) is not possible: Neither under the "old" File (Just "save") nor under a new File-Name/in a new directory ("save as"). In the first case, the error message below occurs. In the second case, a stack trace gets reported saying in the end: "Der Teil-URI muss mit einem Schrägstrich beginnen." ("The URI-Part has to start with a Slash"). This leads me to the consideration that i have to insert a filename. But i did this for sure by following the normal way of saving files.

Expected behavior
A saved AASX-file with all suppl. files, submodels and conceptdescription in it.

Screenshots
NoFile

I'm glad, if someone can help me here.

Find crashed

In EnumerateSearchable()
Check for objType.IsEnum -> then return
Set SearchOptions.maxDepth to 1000 in ToolControlFindReplace.cs:UpdateToOptions()

Defining our digital twin

We have started an initiative to define a digital twin for a material/product.
On this several many measurements can take place. Therefore we would like to define a measuremenTypeList. So we can have a generic set of measurements each categorized by a measurement type. This list of types should have several properties like type, descript, units, etc.

Can someone point us in the right direction?

Missing support for relative URIs in relationships

The OPC format allows relative URIs in relationships, but the aasx-explorer doesn't load an .aasx if it contains a part URI that doesn't start with a forward slash.

We would like to use the Apache OPC library from the POI project in Eclipse BaSyx to build .aasx files. This library uses relative part URIs.
E.g. in the file /_rels/.rels it sets "aasx/aasx-origin" as target instead of "/aasx/aasx-origin" expected by the aasx-explorer.

I've generated a minimal .aasx file with the Apache OPC library test.zip (renamed .zip for GitHub to accept it). It loads if all relative paths in the .rels files are manually replaced by absolute paths. But I think it should also load with the relative paths.

I've tested it with the 2020-12-03 binaries.

Value types are not imported from Submodel Json files

Hello everyone,

Describe the bug
Importing a Submodel from Json clears all valueType entries of SubmodelElements (e.g. Property, Range).

To Reproduce
Create a Submodel Json for testing:

  1. Create and export a Submodel to Json
    1.1. Create a Submodel with a Property and select any value type
    1.2. Select the Submodel
    1.3. Export the Submodel to Json (File->Export-> Export Submodel to Json)
    1.4. valueType field of Property is correctly set within the Json file

Reproduce the bug:
2. Import a Json Submodel
2.1 Select a Submodel in any project
2.2 Import the previously created Submodel (File->Import-> Import Submodel from Json)
2.3 Value type is empty (exporting this Submodel again leads to empty valueType fields within the Json)

Expected behavior
Value types of SubmodelElements within a Json Submodel shall be imported correctly.

Desktop (please complete the following information):

  • OS: Windows 10 Enterprise
  • Package Explorer: v2021-02-25

Export OPC UA Nodeset2.xml (via UA server plug-in)

Describe the bug
I want to create a nodeset.xml file to import it into my OPC UA server developed in python, in such a way that it allows me to install an AAS, starting from said file; but I get the following error:
image
Starting plug-in Net46AasxServerPlugin, action server-start ..
[Net46AasxServerPlugin] Starting OPC UA AASX Server. Based on the OPC Foundation UA Net Standard stack.
[Net46AasxServerPlugin] Copyright (c) 2018-2019 Festo AG & Co. KG https://www.festo.com/net/de_de/Forms/web/contact_international, author: Michael Hoffmeister.
[Net46AasxServerPlugin] Portions copyright (c) by OPC Foundation, Inc. and licensed under the Reciprocal Community License (RCL).
[Net46AasxServerPlugin] See https://opcfoundation.org/license/rcl.html.
[Net46AasxServerPlugin] AASX package env has filename C:\Users\Desktop_J_Y\OneDrive - correounivalle.edu.co\Proyecto de grado\AasxPackageExplorer\content-for-demo\Example_AAS_ServoDCMotor_21.aasx
[Net46AasxServerPlugin] Taking over 2 arguments: -export-nodeset C:\Users\Desktop_J_Y\OneDrive - correounivalle.edu.co\Proyecto de grado\Mi_Git_Hub\Industria4.0-Univalle\Impresoras3D_VBS\XML\AAS_ServoDCMotor.xml
[Net46AasxServerPlugin] will start..........
[Net46AasxServerPlugin] [1] Could not load HTTPS Stack Listener. No se puede cargar el archivo DLL 'libuv': No se puede encontrar el módulo especificado. (Excepción de HRESULT: 0x8007007E) AggregateException 'Se han producido uno o varios errores.' Se han producido uno o varios errores.
[Net46AasxServerPlugin] [128] MasterNodeManager.Startup - NodeManagers=3 -
[Net46AasxServerPlugin] [1] Unexpected error starting application ArgumentNullException 'El valor no puede ser nulo.
Nombre del parámetro: server' El valor no puede ser nulo.
Nombre del parámetro: server

To Reproduce
Steps to reproduce the behavior:
1- Download aasx-package-explorer-small.2020-12-03.alpha.rar
2- unzipped the rar
3- I opened aasx package explorer
4- load the aasx of the exampleMotor
5- use the Export Nodeset2 Via OPC UA Server option.
6- Modify the file [NET46AasxServerPlugin.Config.xml], Change the localhost part for my IP address; however the error remains the same.

Expected behavior
I was hoping to create an AAS xml file to import into my OPC UA server developed in python; but a file is created that when I import it on the server it doesn't work, I wanted to get an xml file like the following:
image
image
image
image
image
image

Finally I hope to know if the described option allows me to do what I want, or an explanation of how it is used ... I would appreciate it.

XML Serialization of qualifiers is not conform to schema

In the schema the serialization of qualifiers is defined as follows:

<group name="qualifiable">
  <sequence>
    <element maxOccurs="unbounded" minOccurs="0" name="qualifier"type="aas:constraint_t"/>
  </sequence>
</group>

<complexType name="constraint_t">
  <choice>
     <element maxOccurs="1" minOccurs="0" name="formula"type="aas:formula_t"/>
     <element maxOccurs="1" minOccurs="0" name="qualifier"type="aas:qualifier_t"/>
  </choice>
</complexType>
 
<complexType name="qualifier_t">
  <sequence>
     <element maxOccurs="1" minOccurs="1" name="type"type="aas:qualifierType_t"/>
     <element maxOccurs="1" minOccurs="1" name="valueType"type="aas:dataTypeDef_t"/>
     <element maxOccurs="1" minOccurs="0" name="valueId"type="aas:reference_t"/>
     <element maxOccurs="1" minOccurs="0" name="value"type="aas:valueDataType_t"/>
     <group ref="aas:hasSemantics"/>
  </sequence>
</complexType>

If an element has two qualifier the serialization of the package explorer is:

<aas:qualifier>
  <aas:qualifier>
    <aas:type>http://acplt.org/Qualifier/ExampleQualifier</aas:type>
    <aas:valueType>int</aas:valueType>
    <aas:valueId>
      <aas:keys>
        <aas:key type="GlobalReference" local="false" idType="IRI">http://acplt.org/ValueId/ExampleValueId</aas:key>
      </aas:keys>
    </aas:valueId>
    <aas:value>100</aas:value>
  </aas:qualifier>
  <aas:qualifier>
    <aas:type>http://acplt.org/Qualifier/ExampleQualifier2</aas:type>
    <aas:valueType>int</aas:valueType>
    <aas:valueId>
      <aas:keys>
        <aas:key type="GlobalReference" local="false" idType="IRI">http://acplt.org/ValueId/ExampleValueId</aas:key>
      </aas:keys>
    </aas:valueId>
    <aas:value>50</aas:value>
  </aas:qualifier>
</aas:qualifier>

To be conform to the schema it should be:

<aas:qualifier>
  <aas:qualifier>
    <aas:type>http://acplt.org/Qualifier/ExampleQualifier</aas:type>
    <aas:valueType>int</aas:valueType>
    <aas:valueId>
      <aas:keys>
        <aas:key type="GlobalReference" local="false" idType="IRI">http://acplt.org/ValueId/ExampleValueId</aas:key>
      </aas:keys>
    </aas:valueId>
    <aas:value>100</aas:value>
  </aas:qualifier>
</aas:qualifier>
<aas:qualifier>
  <aas:qualifier>
    <aas:type>http://acplt.org/Qualifier/ExampleQualifier2</aas:type>
    <aas:valueType>int</aas:valueType>
    <aas:valueId>
      <aas:keys>
        <aas:key type="GlobalReference" local="false" idType="IRI">http://acplt.org/ValueId/ExampleValueId</aas:key>
      </aas:keys>
    </aas:valueId>
    <aas:value>50</aas:value>
  </aas:qualifier>
</aas:qualifier>

In BOM Plugin, reflect more information from AAS structures

During the discussion for the "Web Werkstatt AAS", it was identified, that the BOM plugin (AasxPluginBomStructure) shall reflect also ReferenceElements. May be, also other information requests can be collected here.

Started branch: MIHO/EnhanceBomPluginForReferences

SaveAs AASX with JSON in Package Explorer

MIHO: I've received this via email

Good Day,

This is regarding AASX package explorer “Save as” feature. This feature provides an option “AASX package files w/ JSON .aasx”, my understanding with this option is that within the AASX container format there would be a json file. But in fact there is an xml file packaged in to the AASX file. I have tried to debug about this, I found that the problem is with the below piece of code from “PackageContainerLocalFile.cs”. The line highlighted in the below code is the one responsible for this action, may be I could be wrong in this.

I sincerely request you to look into this aspect once, If my investigation is correct and If it is ok with you I could create a new branch and push to the github.

        if (IndirectLoadSave)
        {
            // the container or package might be new
            if (!Env.IsOpen || TempFn == null)
            {
                TempFn = CreateNewTempFn(Location, IsFormat);
                Env.SaveAs(TempFn);
            }

            // do a close, execute and re-open cycle
            try
            {
                Env.TemporarilySaveCloseAndReOpenPackage(() =>
                {
                   System.IO.File.Copy(Env.Filename, Location, overwrite: true);
                });
            }
            catch (Exception ex)
            {
                throw new PackageContainerException(
                    $"While indirect-saving aasx to source {this.ToString()} " +
                    $"at {AdminShellUtil.ShortLocation(ex)} gave: {ex.Message}");
            }
        }
        else
        {
            // new file?
            if (saveAsNewFileName != null)
            {
                // save as
                try
                {
                    Env.SaveAs(saveAsNewFileName, prefFmt: prefFmt);
                }
                catch (Exception ex)
                {
                    throw new PackageContainerException(
                        $"While saving aasx to new source {saveAsNewFileName} " +
                        $"at {AdminShellUtil.ShortLocation(ex)} gave: {ex.Message}");
                }
            }
            else
            {
                // just save
                try
                {
                    Env.SaveAs(Location);
                }
                catch (Exception ex)
                {
                    throw new PackageContainerException(
                        $"While direct-saving aasx to source {this.ToString()} " +
                        $"at {AdminShellUtil.ShortLocation(ex)} gave: {ex.Message}");
                }
            }
        }

Thanks and Regards,

Interfacing AAS with asset

Hello guys, does AAS Package explorer have a feature so that i can interface it with the asset(Demonstrators robot) using OPC UA and access the robot.

GUI test TestBasic.Test_that_error_report_doesnt_break_the_app fails

cc @mristin

The problem persists after cleaning and re-building the project. The directory 2zgfhisg.hjx that is mentioned in the exception message does not exist.

The following build will be used for the tests: >>> C:\Projects\aasx-package-explorer\artefacts\build\Debug <<<

NUnit Console Runner 3.11.1 (.NET 2.0)
Copyright (c) 2020 Charlie Poole, Rob Prouse
Montag, 22. Februar 2021 15:26:15

Runtime Environment
   OS Version: Microsoft Windows NT 6.2.9200.0
   Runtime: .NET Framework CLR v4.0.30319.42000

Test Files
    C:\Projects\aasx-package-explorer\artefacts\build\Debug\AasxPackageExplorer.GuiTests.dll

Test Filters
    Test: AasxPackageExplorer.GuiTests.TestBasic.Test_that_error_report_doesnt_break_the_app

Unbehandelte Ausnahme: AasxWpfControlLibrary.PackageCentral.PackageCentralException: PackageCentral: while performing load from C:\Users\krahlro\AppData\Local\Temp\2zgfhisg.hjx\invalid.aasx at \PackageCentral.cs:Zeile 94. gave: Mindestens ein Fehler ist aufgetreten. ---> System.AggregateException: Mindestens ein Fehler ist aufgetreten. ---> AasxWpfControlLibrary.PackageCentral.PackageContainerException: While opening aasx C:\Users\krahlro\AppData\Local\Temp\tmpE032.aasx from source local file: C:\Users\krahlro\AppData\Local\Temp\2zgfhisg.hjx\invalid.aasx buffered to: C:\Users\krahlro\AppData\Local\Temp\tmpE032.aasx at \AdminShellPackageEnv.cs:Zeile 300. gave: While opening the package to read AASX C:\Users\krahlro\AppData\Local\Temp\tmpE032.aasx at \AdminShellPackageEnv.cs:Zeile 296. gave: Die Datei enthõlt beschõdigte Daten.
   bei AasxWpfControlLibrary.PackageCentral.PackageContainerLocalFile.<LoadFromSourceAsync>d__10.MoveNext() in C:\Projects\aasx-package-explorer\src\AasxWpfControlLibrary\PackageCentral\PackageContainerLocalFile.cs:Zeile 148.
--- Ende der Stapel³berwachung vom vorhergehenden Ort, an dem die Ausnahme ausgel÷st wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei System.Runtime.CompilerServices.TaskAwaiter.GetResult()
   bei AasxWpfControlLibrary.PackageCentral.PackageContainerLocalFile.<CreateAndLoadAsync>d__6.MoveNext() in C:\Projects\aasx-package-explorer\src\AasxWpfControlLibrary\PackageCentral\PackageContainerLocalFile.cs:Zeile 85.
--- Ende der Stapel³berwachung vom vorhergehenden Ort, an dem die Ausnahme ausgel÷st wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   bei AasxWpfControlLibrary.PackageCentral.PackageContainerFactory.<GuessAndCreateForAsync>d__1.MoveNext() in C:\Projects\aasx-package-explorer\src\AasxWpfControlLibrary\PackageCentral\PackageContainerFactory.cs:Zeile 193.
--- Ende der Stapel³berwachung vom vorhergehenden Ort, an dem die Ausnahme ausgel÷st wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   bei AasxWpfControlLibrary.PackageCentral.PackageCentralItem.<>c__DisplayClass5_0.<<Load>b__0>d.MoveNext() in C:\Projects\aasx-package-explorer\src\AasxWpfControlLibrary\PackageCentral\PackageCentral.cs:Zeile 86.
   --- Ende der internen Ausnahmestapel³berwachung ---
   bei System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification)
   bei AasxWpfControlLibrary.PackageCentral.PackageCentralItem.Load(PackageCentral packageCentral, String location, String fullItemLocation, Boolean overrideLoadResident, PackageContainerOptionsBase containerOptions, PackCntRuntimeOptions runtimeOptions) in C:\Projects\aasx-package-explorer\src\AasxWpfControlLibrary\PackageCentral\PackageCentral.cs:Zeile 94.
   --- Ende der internen Ausnahmestapel³berwachung ---
   bei AasxWpfControlLibrary.PackageCentral.PackageCentralItem.Load(PackageCentral packageCentral, String location, String fullItemLocation, Boolean overrideLoadResident, PackageContainerOptionsBase containerOptions, PackCntRuntimeOptions runtimeOptions) in C:\Projects\aasx-package-explorer\src\AasxWpfControlLibrary\PackageCentral\PackageCentral.cs:Zeile 105.
   bei AasxPackageExplorer.MainWindow.UiLoadPackageWithNew(PackageCentralItem packItem, AdminShellPackageEnv takeOverEnv, String loadLocalFilename, String info, Boolean onlyAuxiliary, Boolean doNotNavigateAfterLoaded, PackageContainerBase takeOverContainer, String storeFnToLRU) in C:\Projects\aasx-package-explorer\src\AasxPackageExplorer\MainWindow.xaml.cs:Zeile 222.
   bei AasxPackageExplorer.MainWindow.<CommandBinding_GeneralDispatch>d__4.MoveNext() in C:\Projects\aasx-package-explorer\src\AasxPackageExplorer\MainWindow.CommandBindings.cs:Zeile 136.
--- Ende der Stapel³berwachung vom vorhergehenden Ort, an dem die Ausnahme ausgel÷st wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   bei System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
   bei System.Windows.Threading.DispatcherOperation.InvokeImpl()
   bei MS.Internal.CulturePreservingExecutionContext.CallbackWrapper(Object obj)
   bei System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   bei MS.Internal.CulturePreservingExecutionContext.Run(CulturePreservingExecutionContext executionContext, ContextCallback callback, Object state)
   bei System.Windows.Threading.DispatcherOperation.Invoke()
   bei System.Windows.Threading.Dispatcher.ProcessQueue()
   bei System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   bei MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   bei MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
   bei System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   bei System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
   bei System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
   bei MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
   bei MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
   bei System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
   bei System.Windows.Application.RunDispatcher(Object ignore)
   bei System.Windows.Application.RunInternal(Window window)
   bei AasxPackageExplorer.App.Main()

Errors, Failures and Warnings

1) Failed : AasxPackageExplorer.GuiTests.TestBasic.Test_that_error_report_doesnt_break_the_app
The application unexpectedly exited. Check manually why the file could not be opened: C:\Users\krahlro\AppData\Local\Temp\2zgfhisg.hjx\invalid.aasx
   bei AasxPackageExplorer.GuiTests.Common.AssertLoadAasx(Application application, Window mainWindow, String path) in C:\Projects\aasx-package-explorer\src\AasxPackageExplorer.GuiTests\Common.cs:Zeile 272.
   bei AasxPackageExplorer.GuiTests.TestBasic.<>c__DisplayClass7_0.<Test_that_error_report_doesnt_break_the_app>b__0(Application application, UIA3Automation automation, Window mainWindow) in C:\Projects\aasx-package-explorer\src\AasxPackageExplorer.GuiTests\Test.cs:Zeile 156.
   bei AasxPackageExplorer.GuiTests.Common.RunWithMainWindow(Implementation implementation, Run run) in C:\Projects\aasx-package-explorer\src\AasxPackageExplorer.GuiTests\Common.cs:Zeile 169.
   bei AasxPackageExplorer.GuiTests.TestBasic.Test_that_error_report_doesnt_break_the_app() in C:\Projects\aasx-package-explorer\src\AasxPackageExplorer.GuiTests\Test.cs:Zeile 154.

Execution terminated after first error

Run Settings
    DisposeRunners: True
    WorkDirectory: C:\Projects\aasx-package-explorer\artefacts\build\Debug
    StopOnError: True
    ImageRuntimeVersion: 4.0.30319
    ImageTargetFrameworkName: .NETFramework,Version=v4.7.2
    ImageRequiresX86: False
    ImageRequiresDefaultAppDomainAssemblyResolver: False
    RuntimeFramework: net-4.0
    NumberOfTestWorkers: 4

Test Run Summary
  Overall result: Failed
  Test Count: 1, Passed: 0, Failed: 1, Warnings: 0, Inconclusive: 0, Skipped: 0
    Failed Tests - Failures: 1, Errors: 0, Invalid: 0
  Start time: 2021-02-22 14:26:15Z
    End time: 2021-02-22 14:26:27Z
    Duration: 11.681 seconds

Results (nunit3) saved as C:\Projects\aasx-package-explorer\artefacts\GuiTestResults.xml
powershell : Running the GUI test(s) with Nunit3 console failed.
In Zeile:1 Zeichen:1
+ powershell -ExecutionPolicy Bypass -File .\TestGui.ps1 AasxPackageExp ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (Running the GUI...console failed.:String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError
 
In C:\Projects\aasx-package-explorer\src\TestGui.ps1:152 Zeichen:13
+             throw "Running the GUI test(s) with Nunit3 console failed ...
+             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (Running the GUI...console failed.:String) [], RuntimeException
    + FullyQualifiedErrorId : Running the GUI test(s) with Nunit3 console failed.

kind of Asset either Type or Instance (not Template or Instance)

As described in admin-shell-io/questions-and-answers#7 there is a bug w.r.t. kind of an Asset:
Conformant to Spec. V2.0.1 assetKind it is either Type or Instance. In the moment it is Template and Instance: but this is only true for SubmodelElement and Submodel.
It should also be renamed to assetKind.

(Probably the case because in previous releases there was one abstract Class HasKind for both of the elements...), now Asset is not inheriting from HasKind any longer.

MQTT Plugin

Describe the bug
Hi,

I want to use the MQTT Plugin with the AASx Package Explorer.

When I try to use the cmd line to enable the plugin with " C:\user....\AasxPackageExplorer -dll AasxMqttServer.dll" or " C:\user....\AasxPackageExplorer -dll AasxMqtt\bin\Debug\AasxMqttServer.dll", it doesn't work.

It just open the AASx Package Explorer again.

I appreciate if you can help with this problem.

Thank you!
Ferremientos

Unable to import Submodels/SubModelElements exported from iec-cdd

I am not able to import the submodels/submodelelements exported from the iec-cdd website as explained in the following screen cast : https://admin-shell-io.com/screencasts/aasx-package-explorer/en/Aasx_PackEx_Tutorial_-_EN_-_52_Import_IEC_CDD_Class_Export.mp4.

I have made sure to copy the xls files into the iec-cdd subdirectory under the AasxPackageExplorer directory.
image

When trying to import the Submodel no options are provided in the drop down (check image).
image

Even manually choosing the xls file makes no difference.

I am using the following version of the AASX package explorer
image

Temporary file should be deleted

Describe the bug
Temporary File created from MakePackageFileAvailableAsTempFile() or Load() with indirectLoadSave = true should be deleted if they no longer been necessary.

To Reproduce
-Use .aasx-file with supplementary files
-or Load any aasx-file with indirectLoadSave

-See you Temp Folder overflow with many tmp$$$$.aasx files.

Expected behavior
Temporary file should be deleted at dispose

Transfer of Concept Descriptions to Sub-models generated by GenericForms

Describe the bug
Concept Descriptions are not transferred to the Sub-modell when using Generic Forms to create the sub-model.

To Reproduce
Steps to reproduce the behavior:

  1. Create a sub model manually
  2. add concept descriptions
  3. export for concept descriptions
  4. copy file for general forms folder
  5. check created json file; it includes the concept descriptions
  6. open AASX Package Explorer
  7. create new AAS
  8. use PlugIn General Forms to add sub-model
  9. select the newly created general forms
  10. use the forms to instantiate the sub model
  11. the new sub-model has all parameter etc. but no Concept Descriptions

Expected behavior
The new instantiated sub-model references the Concept Description which were provided to the template

Desktop (please complete the following information):

  • OS: Windows 10
  • Browser chrome
  • Version: 1.9.8.3

Changing Property Values via OPC-UA

Describe the bug
Can't really say if it is a bug or more a implementation problem.
Is it possible to change e.g. the values of properties via the OPC-UA Plugin. I would like to use the inbuild opc-ua server and change property values of the aasx file. However, I always get an error (no write permission?).

To Reproduce
Steps to reproduce the behavior:

  1. Start the OPC-UA Server
  2. Check values in UAExpert or any other Program
  3. Try and change a value
  4. See error: Write to node 'NS3|Numeric|1470' failed [ret = BadNotWritable]

Expected behavior
OPC-UA should accept new value and change the value inside the aasx file.

Screenshots
image

Desktop (please complete the following information):

  • OS: Windows 10

Additional context
I also tried the REST API, and PUT and PUSH operations wouldn't work either (getting OK response, however no changes). But that's another story.
If there is another solution to my problem (e.g. via REST, MQTT etc), I would love to hear about that.

big thanks and
kind regards,

Samed

Range is missing in OPC UA nodeset2.xml [QUESTION]

Describe the bug
After exporting AASX into OPC UA nodeset2.xml the range of my property was not in XML. Is there any example which describes a proper way of defining a rangeof a property?

To Reproduce
Steps to reproduce the behavior:
image

Expected behavior
I expect that range is defined in OPC UA nodeset2.xml.

Desktop (please complete the following information):

  • OS: WIN 10
  • Browser edge

Icons not shown in Flyover

change to "/AasxIntegrationBaseWpf;component/Resources/msg_info.png" an similar
for TextBox, Progressbar

(root cause: moved MessageBox to AasxIntegrationBaseWpf)

Export AAS as i4aas nodeset --> mapping types

Describe the bug
When I try to export the AASX as i4aas nodeset, it says "mapping types could not be found". Any instructions on adding the types?
I also cant load the Net46AasxServerPlugin for the export as OPC UA nodeset because the documentation seems to be gone.

To Reproduce
Steps to reproduce the behavior:

  1. Go to 'File, Export, Export AAS as i4aas nodeset
  2. See error "no mapping types"

Expected behavior
Export as nodeset.xml

Screenshots
If applicable, add screenshots to help explain your problem.
image

Desktop (please complete the following information):

  • OS: Windows 10
  • Version AASX Package Explorer 2020-09-16.alpha

Active Part of AAS

Thanks for your amazing package for the AAS. I noticed that your package just provide passive submodels for the AAS. I wonder if you provide a package or add new feature to the AASX-Package to enable active part of AAS. This feature is the importance of adding functionality to AAS.
Thank you once again for the useful package.

The tool will be crashed after searching a property from eCl@ss

Describe the bug
The Tool is hanging and won't be closed by close button. Need to be closed by the Task Manager>End Task

To Reproduce
Steps to reproduce the behavior:

  1. Go to 'a Property of a submodel that is not assigned to any ConceptDescriptions'
  2. Click on 'Create and assign from eCl@ss' button
  3. In the next windows, checked the box of Properties option from the top, insert the (correct and exact) name of the property in the Search For field
  4. Click on 'Start'
  5. See the Tool hanging

Expected behavior
The IRDI of the Property from eCl@ss to be appear

Screenshots
Retrived ConceptDescriptions from elCass

Desktop (please complete the following information):

  • OS: [Windows 10 Pro]
  • Browser [chrome]
  • Version [ 87.0.4280.141]

Additional context
The current file will be crashed and not fixable. Have a backup before trying this.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.