Acuit Pinpoint Change History
Acuit Pinpoint uses semantic versioning.
7.1.94 - 2023-05-02
Workstation
- Improve: The message added to the test log when a test being performed within a test workflow fails now includes right-arrow separators between the various detail messages to make them easier to read.
Developer API
Acuit.Pinpoint.Workflows Package
- New: Added
NullExtensions.IsNotNull
overload for nullable value type arguments.
Acuit.Pinpoint.Workflows.Testing Package
- Improve: Added right-arrow separators between inner exceptions shown in test log via
TestFailedException
CreateLogged
andCreateLoggedFromReason
methods.
7.1.91 - 2023-05-01
Workstation
- Improve: Now when a test being performed within a test workflow fails, the message logged to the test log will include all details about the error (i.e., inner exception messages).
Developer API
Acuit.Pinpoint.Workflows.Testing Package
- Improve:
TestFailedException
CreateLogged
andCreateLoggedFromReason
methods now include messages from inner exceptions in the log message.
7.1.89 - 2023-04-30
Developer API
Acuit.Pinpoint.Workflows.Testing Package
- Change:
TestFailedException
now derives fromWorkflowException
.
7.1.87 - 2023-04-30
Major Workflows Update
This version includes a major update to Acuit Pinpoint Workflows that brings these major new enhancements:
- Built-in, standardized support for readings from devices that can be used by a new suite of built-in workflow activities that can be used to easily create test workflows.
- A new standardized way to track data values with metadata describing units, precision, etc.
- Improved workflow activity input arguments design, including support for asynchronous value sources (including other activities) and for data sources that stream a series of values asynchronously.
- Standardized support for activities that produce a result, with a new
IActivity
abstraction for executable activities. This replaces the old "OutputVariableName" method of producing output values.
BREAKING CHANGES:
- The XAML for some workflows will require updates due to a few breaking changes to built-in activities. Changes are detailed below.
- All Acuit Pinpoint Workstation plug-ins that reference any workflows NuGet packages (such as Acuit.Pinpoint.Workflows) to do things like provide custom activities for workflows must be recompiled against this new version, updating as needed to support the breaking changes.
Server
- New: Can now configure rejected parts for component types via the
<rejectParts>
element. - New:
Acuit.Pinpoint:PlugIns:SearchPaths
key/value setting, to make configuring line plug-in search paths easier than with the existingAcuit.Pinpoint:PlugIns:SearchPath
setting. - New: The
Acuit.Pinpoint:PlugIns:SearchPath
key/value setting (and the newAcuit.Pinpoint:PlugIns:SearchPaths
setting) can now contain environment variables quoted with the percent sign character (%). - New: Now key/value configuration settings that specify paths to files that will be retrieved
by Acuit Pinpoint Workstation (e.g., plug-ins referenced via line configuration or files like
images used by certain plug-ins) can contain environment variables quoted with the percent sign
character (%).
Settings defined on Acuit Pinpoint Server with environment variables will work even with older versions of Acuit Pinpoint Workstation that retrieve these files. - Improve: Now logs warnings to the application log for configured plug-in search paths that don't exist.
- Fix: Grammer error in a component scan tester logic details message.
- Some internal components were upgraded for incremental performance and reliability improvements: jquery, LigerShark.WebOptimizer.Core, Microsoft.AspNetCore.Authentication.Negotiate, Microsoft.EntityFrameworkCore.SqlServer, Newtonsoft.Json, Telerik.UI.for.Blazor
Workstation
- BREAKING CHANGES: See the "Acuit.Pinpoint.Workflows Package", "Acuit.Pinpoint.Workflows.Testing Package", and "Acuit.Pinpoint.Workflows.Workstation Package" sections below for changes that affect plug-ins or custom workflows.
- BREAKING CHANGES: Test workflows will no longer be provided a
Tester
parameter. - New: Now provides an
IReadingsRegistry
service that plug-ins can easily use to provide readings for use by workflows, including with automatic polling. - New: Now configuration settings defined in local configuration sources (e.g., settings.json) that specify paths to files that are retrieved by Acuit Pinpoint Workstation (e.g., plug-ins referenced via line configuration or files like images used by certain plug-ins) can contain environment variables quoted with the percent sign character (%).
- Change: The alarm message and error log entries that occur when an error occurs in a unit workflow or in a test workflow due to parameter errors have changed wording slightly.
- Fix: Now when a test workflow fails due to an unhandled error, the application will not crash, but instead will log an error and show an alarm message. If the test type was configured to use a view that required navigation (e.g., MainView), then the test view will be closed.
- Fix: Bug where
ITestViewModel.WorkflowData
would clear as soon as a test workflow completed, which would cause test views that continued to display data from the workflow to stop working. - Fix: Crash when a plug-in attempts to display a message box (which can happen indirectly via an interactive alarm) after the main window has closed.
- Fix: Shows incorrect "The method or operation is not implemented." alarm message and error log entry when configuration settings cannot be initialized due to some conditions.
- Fix: Installer not using install folder customized via bootstrapper, and removed feature selection screen.
- New capabilities in Acuit Pinpoint Server emulation via "ServerEmulation" config section:
- New: Can now configure component scans with which to initially populate test units.
- New: Can now emulate responding to invoked server plug-in methods.
- Improve: Table source file paths can now include environment variables.
- Some internal components were upgraded for incremental performance and reliability improvements: Microsoft.Data.Sqlite, Newtonsoft.Json, System.ServiceModel.NetTcp, Telerik.Windows.Controls.Data.for.Wpf.Xaml, Telerik.Windows.Controls.FixedDocumentViewers.for.Wpf.Xaml
Reporting
- Some internal components were upgraded for incremental performance and reliability improvements: Hangfire, jquery, Microsoft.AspNetCore.Authentication.Negotiate, Newtonsoft.Json, Telerik.Reporting.OpenXmlRendering, Telerik.Reporting.Services.AspNetCore
Developer API
Server API
- New: Now paths to files retrieved via the PinpointFileService API can contain environment variables quoted with the percent sign character (%).
- Change: Now the
ComponentScanTest
method does not include a line feed at the end of each step result.
Acuit.Pinpoint.Configuration Package
- Fix:
NotImplementedException
thrown when a file configuration source uses a relative path. - Now references Newtonsoft.Json 13.0.3
- Now references System.ServiceModel.Primitives 4.10.2
Acuit.Pinpoint.IO.Abstractions Package
- New: Added
OptionalSingleConfiguredDeviceEnumerator
. - New: Added
PolledConnectedDevice
. - Change: Now depends on Acuit.Pinpoint.ErrorHandling.Abstractions and Acuit.Pinpoint.Timing.Abstractions.
- Added separate .NET 4.7.2 target.
Acuit.Pinpoint.IO.Testing.Abstractions Package
- New: Initial version of this new package, which provides a new standardized way for plug-ins
to provide data readings from devices that can be consumed via standard workflow activities.
Primary types include
IDataValue
,IDataValueDescriptor
, andIReadingsRegistry
.
Acuit.Pinpoint.ResourceManagement Package
- Now references Microsoft.Data.Sqlite 7.0.5
Acuit.Pinpoint.Server.Client Package
- Now references System.ServiceModel.NetTcp 4.10.2
Acuit.Pinpoint.Timing.Abstractions Package
- New: Timeout timers, via
ITimeService.StartNewTimeoutTimer
extension method that returns anITimeoutTimer
.
Acuit.Pinpoint.Windows Package
- Fix: "Cannot set Owner property to a Window that has not been shown previously"
InvalidOperationException
inBaseUserInterfaceService
when it attempts to display a message box with no visible application window.
Acuit.Pinpoint.Workflows Package
The following changes to this package affect workflows (i.e., XAML workflow definitions):
- BREAKING CHANGE: The syntax used to escape a string value in XAML that would normally be interpreted as a code expression (e.g., "[...]") has changed. To specify the string literal of "[Literal]", this should be used: "%[Literal]" (the old method used "[][Literal]").
- BREAKING CHANGE: Removed support for workflows that used the old
http://schemas.acuit.com/pinpoint/2020/xaml/testing
namespace.http://schemas.acuit.com/pinpoint/2020/xaml/workflows
should be used instead. - New: Added the following new workflow activity:
DoWithCleanup
- Changes to existing workflow activities include:
ExecuteWorkflow
- Improve: The
ParameterValue
item'sValue
property can now be set via content.
- Improve: The
SetVariable
- Improve: The
Value
property can now be set via content.
- Improve: The
- Improve: All workflow activities with input arguments that are collections now use collection types recognized by the Visual Studio XAML editor, reducing nuisance errors in the editor.
The following changes to this package affect plug-ins that reference this package (i.e., code):
- BREAKING CHANGE: The
Expression<TValue>
expression type and the obsolete non-generic expression types (e.g.,StringExpression
), have been removed and replaced by the new, more generalValueSource
/ValueSource<T>
types that support asynchronous evaluation. - BREAKING CHANGE: Removed
ActivityWithOutput<TOutput>
, replacing withActivity<TResult>
that allows activities that produce result values to do so in a standard way that can be consumed by other activities, including in workflow XAML as values for activity input arguments. Custom activities should derive from eitherActivity
(if they do not produce a result value) orActivity<TResult>
(if they do produce a result value). BecauseActivity<TResult>
does not derive fromActivity
, properties and parameters that accept any activity for execution now useIActivity
so that any executable activity can be provided, whether or not it produces a result value.ActivityContext
,WorkflowHost
, andWorkflowInvoker
all have added support for obtaining result values from activities that produce them. - BREAKING CHANGE: The old expression validation helpers have been replaced with new
ActivityContext
extension methods for evaluating and validating value sources that support fluent validation (inAcuit.Pinpoint.Workflows.Validation.ValidationExtensions
). - BREAKING CHANGE: Activities and other types that have optional input arguments now all use
nullable types for their values (e.g.,
Transition.Condition
now yields abool?
instead ofbool
). - BREAKING CHANGE: Workflow execution errors will now always yield a
WorkflowException
(or derived). Unhandled exceptions thrown by the workflow will be wrapped in aWorkflowException
. This changes the exceptions that can be produced from:WorkflowHost.Task
- All of the
WorkflowInvoker.InvokeAsync
methods IWorkflowEventManager.RaiseEventAsync
- BREAKING CHANGE: In the
TypeConverterHelper
static class, theConvert
,ConvertValueFromInvariantString
, andTryConvertValueFromInvariantString
methods have been replaced by newConvert
andInvariantConvert
methods with different signatures and expanded capabilities. - BREAKING CHANGE: Removed the
XamlLoader
andXamlParser
helper classes.WorkflowXamlServices
should be used instead. - Change:
WorkflowParameterException
now derives fromWorkflowException
and has a newParameterName
property. - Change:
WorkflowHost
methods can now throwObjectDisposedException
.
Acuit.Pinpoint.Workflows.Testing Package
The following changes to this package affect workflows (i.e., XAML workflow definitions):
- BREAKING CHANGE: Removed the following workflow activities and types:
AggregateMaximum
,AggregateMinimum
,AggregateReadings
,BooleanTestDataValidator
,MinMaxTestDataValidator
,PowerOff
,PowerOn
,ReadingMonitor
,TargetToleranceTestDataValidator
,ThermostatClear
,ThermostatSet
(these used the old tester registry and have been replaced by new activities listed below)PerformTest
(obsolete, replaced byRecordTest
)
- New: Added the following new workflow activities and types:
MonitorData
TakeValue
- Readings markup extensions:
{Reading ...}
,{ReadingNow ...}
- Data value samplers:
SampleAfterDelay
,SampleAverageOverTime
,SampleMinimumOverTime
,SampleValidOverSlidingWindow
,SampleValidOverTime
,SampleWhenAny
,SampleWhenBecomesValid
- Validators:
EqualToValidator
,GreaterThanOrEqualToValidator
,GreaterThanValidator
,LessThanOrEqualToValidator
,LessThanValidator
,MinMaxValidator
,NotEqualToValidator
,TargetToleranceValidator
- Improve: All activities that can fail the active test now use the
ITestLog
service (if available) to first log a test failure message before throwing the exception, and then theRecordTest
activity will not log the test failure message when handling the exception (if already logged). This improves the test logs, ensuring that (1) the sequence of events in the test log is accurate, since cleanup actions that perform their own logging can occur in response to the test failure, and (2) the time stamp for the test failure event is accurate. - Changes to existing workflow activities include:
FailTest
- Improve: The test failure message will be logged before failing the test.
FailTestIfTestDataItemBad
- Improve: When failing the test, the test failure message will be logged first.
Log
- Change: Now supports other activities redirecting logging from the active test log, and will now not fail if it executes when there is no active test.
SetTestDataItem
- Improve: When failing the test, the test failure message will be logged first.
- Change: Now supports other activities redirecting logging from the active test log.
RecordTest
- Improve: If another activity emits a test failure log entry before failing the test, the
test failure log entry will not be added again by
RecordTest
.
- Improve: If another activity emits a test failure log entry before failing the test, the
test failure log entry will not be added again by
SetTestDataItem
- BREAKING CHANGE: The
Validator
property was removed, replaced by theIsGood
property from which the good/bad status is determined directly. - Improve: When failing the test, the test failure message will be logged first.
- Improve: Now automatically uses all available information about a data value (e.g., validation status, units, formatting).
- Improve: The
Value
property can now be set via content.
- BREAKING CHANGE: The
TakeValue
- BREAKING CHANGE: The
Sampler
property has been replaced byValue
that accepts any type of value. The new sampler activities can be used to obtain sampled readings.
- BREAKING CHANGE: The
The following changes to this package affect plug-ins that reference this package (i.e., code):
- BREAKING CHANGE: All types in the package have been updated to be consistent with the changes in the Acuit.Pinpoint.Workflows package, as listed above.
- BREAKING CHANGE: Removed the types related to the obsolete tester registry (e.g.,
ITester
,ITesterReading
,ITesterRegistry
), replacing them with services in the new Acuit.Pinpoint.IO.Testing.Abstractions package. Plug-ins can no longer registerITester
instances; they should instead register readings providers viaIReadingsRegistry
. - BREAKING CHANGE: Data value validators have been redesigned to work with the new data value types provided by the Acuit.Pinpoint.IO.Testing.Abstractions package.
- BREAKING CHANGE: Added
StartDateTime
andEndDateTime
toIActiveTest
, andCompleteTest
will now throwInvalidOperationException
if the test has already been completed. - New: Now the
RecordTest
activity provides anITestLog
service to child activities.
Acuit.Pinpoint.Workflows.Workstation Package
The following changes to this package affect workflows (i.e., XAML workflow definitions):
- BREAKING CHANGE: The
Tester
property on the test view model (ITestViewModel
) has been removed. - New: Added
LatestReadings
to the test view model (ITestViewModel
). - Changes to existing workflow activities include:
AddPreassembly
- BREAKING CHANGE: Removed the
OutputVariableName
andOutput
properties; its output value is now available via a returned value from the activity.
- BREAKING CHANGE: Removed the
RemoveComponent
- BREAKING CHANGE: Removed the
OutputVariableName
andOutput
properties; its output value is now available via a returned value from the activity.
- BREAKING CHANGE: Removed the
RemovePreassembly
- BREAKING CHANGE: Removed the
OutputVariableName
andOutput
properties; its output value is now available via a returned value from the activity.
- BREAKING CHANGE: Removed the
ScanItem
- BREAKING CHANGE: Removed the
OutputVariableName
andOutput
properties; its output value is now available via a returned value from the activity.
- BREAKING CHANGE: Removed the
ShowMessageBox
- BREAKING CHANGE: Removed the
OutputVariableName
andOutput
properties; its output value is now available via a returned value from the activity.
- BREAKING CHANGE: Removed the
VerifyAndAddComponentScan
- BREAKING CHANGE: Removed the
OutputVariableName
andOutput
properties; its output value is now available via a returned value from the activity.
- BREAKING CHANGE: Removed the
The following changes to this package affect plug-ins that reference this package (i.e., code):
- BREAKING CHANGE: All types in the package have been updated to be consistent with the changes in the Acuit.Pinpoint.Workflows package, as listed above.
- New: Added
IWorkflowEventManager.HandleWorkflowEventHandlerError
. - Change: Added a new
IWorkflowEventManager.RaiseEventAsync
overload that takes aRaisedWorkflowEventOptions
containing all of the options. Deprecated the oldRaiseEventAsync
overload. - Change: Now
UnitWorkflowCanceledException
derives fromWorkflowException
.
Acuit.Pinpoint.Workstation.Interfaces Package (Workstation Plug-in API)
- New:
SimpleDeviceTester<TDevice>
added to make it easier to create simple device testers.
7.0.148 - 2023-02-27
Server
- Improve: Make Monitor line index page more responsive.
- Fix: "An error has occurred. This application may no longer respond until reloaded." errors that can intermittently occur on the Monitor, View/Search, Admin, and Component Verification Tester pages (since v7.0.59).
- Fix: Incorrect line configuration editor autofill suggestions (e.g., "buyoff" instead of "buyOff") (since v7.0.59).
- Some internal components were upgraded for incremental performance and reliability improvements: CodeMirror, LigerShark.WebOptimizer.Core, Microsoft.AspNetCore.Authentication.Negotiate, Microsoft.EntityFrameworkCore.SqlServer, Quartz
Workstation
- Improve: Pinpoint Server emulation via "ServerEmulation" config section by adding emulation of normal error handling when plug-in tries to invoke a server plug-in method.
- Fix: Crash in Tools, Configure Local Hardware when using a registered custom device that does not use any configuration settings (since v6.220.172).
- Some internal components were upgraded for incremental performance and reliability improvements: Microsoft.CodeAnalysis.CSharp.Scripting
- Fix: Unexpected error that can happen when certain plug-ins are being closed, with an error in
the app log similar to (since v6.227.120-alpha):
System.AggregateException: One or more errors occurred. ---> System.ObjectDisposedException: Cannot access a disposed object.
Object name: 'Acuit.Pinpoint.Workstation.ResourceManagement.TableCsvReferencedResource'. - Some internal components were upgraded for incremental performance and reliability improvements: Microsoft.Data.Sqlite, System.Text.Json
Reporting
- Some internal components were upgraded for incremental performance and reliability improvements: Microsoft.AspNetCore.Authentication.Negotiate
Developer API
Acuit.Pinpoint.ResourceManagement Package
- Now references Microsoft.Data.Sqlite 7.0.3
Acuit.Pinpoint.Workflows Package
- Now references Microsoft.CodeAnalysis.CSharp.Scripting 4.5.0
7.0.112 - 2023-02-12
Server
- Improve: Monitor, Admin, and Component Verification Tester page responsiveness has been improved.
- Improve: View/Search page now supports proper web navigation and linking.
- Improve: Component Verification Tester web page is now cleaner and supports proper web navigation and linking.
- Improve: Minor improvements to Component Verification Tester page messages.
- Change: The Production Monitor page URLs have changed, so saved links may not work (since v7.0.59).
- Fix: Edit links on Edit Security Group page result int 404 page not found (since v7.0.67).
- Fix: Custom test data added by a server plug-in is not included in the View Unit History page (since v7.0.59).
- Fix: Broken unit details links in Monitor Latest Defects page (since v7.0.59).
- Fix: Broken Acuit Pinpoint Workstation installer link on About page (since v7.0.59).
- Fix: Incorrect page titles for admin and monitor pages (since v7.0.59).
- Fix: Help, Check for Update broken from Acuit Pinpoint Workstation v6 (since v7.0.59).
- Fix: When quickly navigating between web pages, sometimes the Monitor, View, or Admin pages
will show an unexpected error with an app log error entry like (since v7.0.59):
Microsoft.AspNetCore.Components.Server.Circuits.CircuitHost: Unhandled exception in circuit.
Microsoft.JSInterop.JSException: Could not find 'TelerikBlazor.initMediaQuery' ('TelerikBlazor' was undefined). - Fix: Change language selector does not work sometimes from Monitor and other pages (since v7.0.59).
- Fix: Monitor page not showing any content when query parameters are formatted improperly or an internal error occurs (since v7.0.59).
7.0.75 - 2023-02-05
Server
- Fix: Bug where switching between Monitor tabs doesn't work when the line name has a space (since v7.0.74).
7.0.74 - 2023-02-05
Server
- Fix: Bug where switching between Monitor tabs doesn't work (since v7.0.59).
7.0.72 - 2023-02-05
Server
- Fix: Bug where Monitor and Admin page links are incorrect (since v7.0.59).
7.0.70 - 2023-02-05
Server
- Fix:
ExceptionHandlerMiddleware
unhandled exception in web app (since v7.0.59):System.UnauthorizedAccessException: Access to the path 'C:\Program Files (x86)\Acuit Pinpoint Server 7\Web\obj\WebOptimizerCache' is denied.
7.0.67 - 2023-02-05
Server
- Change: Web app URLs are now lowercase.
- Change: "index" removed from web app URLs.
- Fix: Cleaned up some items when printing pages from web app.
- Fix: Crash in web app maintenance/productionqueuesender page when a line has a configuration error.
7.0.59 - 2023-02-04
Server
- BREAKING CHANGE: New Acuit Pinpoint web application with these main improvements (along
with many minor improvements):
- Modern web interface that no longer uses Microsoft Silverlight.
- Built-in web server; Microsoft Internet Information Services (IIS) is no longer used.
- Note that some page addresses have changed, so some saved shortcuts will need to be changed.
- Some internal components were upgraded for incremental performance and reliability improvements: Quartz
Server Console
- BREAKING CHANGE: This application has been removed. The Acuit Pinpoint services should now be managed via standard Windows services management facilities.
Workstation
- Some internal components were upgraded for incremental performance and reliability improvements: Microsoft.Data.Sqlite, SQLitePCLRaw.bundle_e_sqlite3, Telerik.Windows.Controls.Data.for.Wpf.Xaml, Telerik.Windows.Controls.FixedDocumentViewers.for.Wpf.Xaml
Reporting
- Fix: Report parameters does not indicate current selection.
- Fix: Missing thread identifier in application log file.
- Some internal components were upgraded for incremental performance and reliability improvements: Hangfire, jquery, Microsoft.AspNetCore.Authentication.Negotiate, Telerik.Reporting.OpenXmlRendering, Telerik.Reporting.Services.AspNetCore
Developer API
Acuit.Pinpoint.Configuration Package
- Now targets .NET Standard 2.0.
Acuit.Pinpoint.HealthChecks Package
- Now targets .NET Standard 2.0.
Acuit.Pinpoint.IO.Abstractions Package
- Now targets .NET Standard 2.0.
Acuit.Pinpoint.ResourceManagement Package
- Now references Microsoft.Data.Sqlite 7.0.2
- Now references SQLitePCLRaw.bundle_e_sqlite3 2.1.4