SouthDaner
SouthDaner

Reputation: 1

Azure DevOps custom extension - Rule evaluate engine throws error

In my custom azure devops extension, i sporadically have users reporting that the extension breaks and is not showing the data it should.

I am using:

My manifest.json is the following:

{
    "contributions": [
        {
            "id": "lean-budget-group",
            "type": "ms.vss-work-web.work-item-form-group",
            "description": "Custom work item form group",
            "targets": [
                "ms.vss-work-web.work-item-form"
            ],
            "properties": {
                "name": "Lean Budget",
                "uri": "dist/WorkItemFormGroup/index.html",
                "height": 600
            }
        }
    ],
    "scopes": [
        "vso.work_write"
    ]
}

When investigating in the browser console i see this error:

ms.vss-work-web.work-item-model.es6.y_XqDY.min.js:1 Error: Error occured in Rule Engine Evaluate. Name: undefined Message: Invalid node id. Rules.length: 2 Rules.Information: Block,Computed,-105,Required,,Trigger,-105 Stack: Error: Invalid node id.

With stacktrace:

at i._setFieldValueForce (ms.vss-work-web.work-item-model.es6.y_XqDY.min.js:1:88499)
    at a (ms.vss-work-web.work-item-model.es6.y_XqDY.min.js:1:86623)
    at i.wrappedSetFieldValue (ms.vss-work-web.work-item-model.es6.y_XqDY.min.js:1:86764)
    at i.setFieldValueById (ms.vss-work-web.work-item-model.es6.y_XqDY.min.js:1:86256)
    at i.validate (ms.vss-work-web.work-item-model.es6.y_XqDY.min.js:1:44239)
    at i.evaluate (ms.vss-work-web.work-item-model.es6.y_XqDY.min.js:1:37039)
    at Object._evaluateFieldRule (ms.vss-work-web.work-item-model.es6.y_XqDY.min.js:1:49535)
    at Object.evaluateFields (ms.vss-work-web.work-item-model.es6.y_XqDY.min.js:1:48871)
    at i.evaluateFields (ms.vss-work-web.work-item-model.es6.y_XqDY.min.js:1:97783)
    at i.evaluate (ms.vss-work-web.work-item-model.es6.y_XqDY.min.js:1:97667)
    at i._setFieldValueForce (ms.vss-work-web.work-item-model.es6.y_XqDY.min.js:1:88499)
    at a (ms.vss-work-web.work-item-model.es6.y_XqDY.min.js:1:86623)
    at i.wrappedSetFieldValue (ms.vss-work-web.work-item-model.es6.y_XqDY.min.js:1:86764)
    at i.setFieldValueById (ms.vss-work-web.work-item-model.es6.y_XqDY.min.js:1:86256)
    at i.validate (ms.vss-work-web.work-item-model.es6.y_XqDY.min.js:1:44239)
    at i.evaluate (ms.vss-work-web.work-item-model.es6.y_XqDY.min.js:1:37039)
    at Object._evaluateFieldRule (ms.vss-work-web.work-item-model.es6.y_XqDY.min.js:1:49535)
    at Object.evaluateFields (ms.vss-work-web.work-item-model.es6.y_XqDY.min.js:1:48871)
    at i.evaluateFields (ms.vss-work-web.work-item-model.es6.y_XqDY.min.js:1:97783)
    at i.evaluate (ms.vss-work-web.work-item-model.es6.y_XqDY.min.js:1:97667)
    at i.evaluate (ms.vss-work-web.work-item-model.es6.y_XqDY.min.js:1:37257)
    at Object._evaluateFieldRule (ms.vss-work-web.work-item-model.es6.y_XqDY.min.js:1:49535)
    at Object.evaluateFields (ms.vss-work-web.work-item-model.es6.y_XqDY.min.js:1:48871)
    at i.evaluateFields (ms.vss-work-web.work-item-model.es6.y_XqDY.min.js:1:97783)
    at i.evaluate (ms.vss-work-web.work-item-model.es6.y_XqDY.min.js:1:97667)
    at i.load (ms.vss-work-web.work-item-model.es6.y_XqDY.min.js:1:108120)
    at new i (ms.vss-work-web.work-item-model.es6.y_XqDY.min.js:1:75609)
    at i.create (ms.vss-work-web.work-item-model.es6.y_XqDY.min.js:1:75760)
    at i.createAsync (ms.vss-work-web.work-item-model.es6.y_XqDY.min.js:1:76208)
    at async s.createWorkItemModel (ms.vss-work-web.work-item-model.es6.y_XqDY.min.js:1:127845)

When investigating further, i find that the error occurs in the method "_setFieldValueForce" with this specific line of code:

case r.CoreField.IterationId:
                    if (!(this._movingToNewIterationFixEnabled ? null === (s = this._nodeService) || void 0 === s ? void 0 : s.getNodeById(this.project.guid, t) : this.project.getNodeById(t)))
                        throw new Error(C.InvalidNodeId);

When in debugging mode and evaluating "s.getNodeById" i receive a valid result, but "this.project.getNodeBydId(t)" return undefined, and throws the error.

this._movingToNewIterationFixEnabled also evaluates to true, but i can find nothing about this variable anywhere on microsoft documentation.

Has anyone had any

I have updated the Azure SDK's npm packages, but since this behaviour only happens for some users, i am wary in changing too much.

Upvotes: 0

Views: 84

Answers (1)

Alvin Zhao - MSFT
Alvin Zhao - MSFT

Reputation: 6037

Based on the description that some (not all) of your users encountered the Error occurred in Rule Engine Evaluate, you can review existing work item rules and see if any of them may have been restricting the modification of the work items by a group, like the sample here.

Upvotes: 1

Related Questions