Closed smorgan19 closed 10 months ago
@smorgan19 Thanks for posting this issue. We have added a new feature for marking "Deprecated" to each BIE in the BIE edit view in versions 3.2.1 to address issue #1298. Here's an example screenshot that marks "Type Code" BIE as "Deprecated".
But, deprecated BIEs are expressed only in OpenAPI expressions with an added deprecated
property as below.
schemas:
itemMaster:
x-oagis-bie-guid: "f2a00253e74d47099a3006ddb3baeacb"
x-oagis-bie-date-time: "2023-11-14T11:15:40-0500"
x-oagis-bie-version: ""
type: "object"
additionalProperties: false
properties:
typeCode:
example: ""
type: "string"
format: "token"
deprecated: true
There are still outstanding questions about how to express these deprecated
property marks in other expressions.
@hakjuoh Awesome, can this new feature be expanded to deprecate an entire production BIE? We are looking for a way of marking an older production BIE in say version 10.6 of OAGIs as deprecated rather than the individual components.
Deprecation needs some documentations to go along with it too.
@kbserm @joshklm Elena raised a few questions: 1) From https://github.com/OAGi/Score/pull/1582#issuecomment-1821142094, if the user copies the deprecated BIE, should the copied BIE be also deprecated? The problem is that the copied BIE would be in WIP state. We agreed that the BIE deprecation is allowed only when it is in Production state.
2) From https://github.com/OAGi/Score/pull/1582#issuecomment-1821157030, Suppose the BIE is reused in other BIEs. For example, the 'Item' BIE is reused in the 'Purchase Order Line' BIE. If the user marks the 'Item' BIE as deprecated, how could it be shown in the 'Purchase Order Line' BIE?
1) If deprecation is one way as had been discussed, then the only way to "revive" a deprecated BIE is to copy it, and WIP seems like the most appropriate state for the copy - any different ideas?
2) What do you think about preventing deprecation of BIEs that are already being used by any un-deprecated BIE? So then all referencing BIEs would have to be deprecated before a referenced BIE could be could be deprecated. Even then it may be good to mark anything deprecated in the tree view. There may be other variations of this to think through as well.
As for expression, I am not seeing that the state is expressed anywhere in the schema currently (I can express in states other than Production) - maybe we keep it that way and the user would just need to be aware of the state of the BIE that they are expressing? Or maybe regardless of which state, we actually should be somehow expressing the state in all schema formats?
There various instances where the ability to mark a profiled bie as deprecated would be beneficial. Examples include when a earlier version of OAGIs is no longer supported and those profiled objects are now obsolete at a company. When users make a small mistake like not enabling a typecode for an attribute, but do not want the schema without the typecode enabled used, etc. This feature could mimic how Code Lists can be deprecated or have some of way make it visible in the view menu that the item is deprecated or this could be an additional state that happens after production.