EA 插件 - API EA_OnNotifyContextItemModified

问题描述 投票:0回答:1

我用 C# 创建了一个插件。
当在 EA 应用程序中,用户选择一个元素,打开上下文元素窗口(通过双击元素)并仅按“确定”按钮而不更改元素内的任何内容时,将触发 API

EA_OnNotifyContextItemModified
。没有修改任何内容,为什么会触发这个API?

有没有办法或者API来区分:

  1. 选择一个元素,打开上下文元素窗口(双击元素),按“确定”

  2. 选择一个元素,打开上下文元素窗口(双击元素),修改某些内容(例如元素的名称),然后按“确定”

add-in enterprise-architect
1个回答
0
投票

当元素可能发生更改时,EA 会通知您。由您决定是否以及什么发生变化。

实现此目的的一种方法是订阅

EA_OnContextItemChanged
事件,并记住元素和相关值(例如名称)

然后在

EA_OnNotifyContextItemModified
中,您可以将这些值与之前记录的值进行比较。

这似乎在大多数情况下都有效。

下面是一个 VBScript 示例,演示了这个概念

Dim contextName
Dim contextGUID
function EA_OnContextItemChanged(GUID, ot)
     if ot = otElement then
        Dim contextElement 
        set contextElement = Repository.GetElementByGuid(GUID)
        if not contextElement is nothing AND isUsedByBPM(contextElement) then
            contextName = contextElement.Name
            contextGUID = contextElement.ElementGUID
        end if
    end if
end function

function EA_OnNotifyContextItemModified(GUID, ot)
     'check if the name has been changed
     if GUID = contextGUID then
        Dim contextElement 
        set contextElement = Repository.GetElementByGuid(GUID)
        if contextName <> contextElement.Name then
            msgbox "Element with name '" & contextName & "' has been changed to '" & contextElement.Name & "'"
        end if
     end if
end function
© www.soinside.com 2019 - 2024. All rights reserved.