问题:
我们有一个执行许多计算并且有些复杂的现有系统。事实上,有时用户不知道某些数据是如何得出的。(如果没有对代码的细节进行广泛的研究,我们也不知道)。我们正在努力实现一项功能,该功能使我们能够准确地向用户展示为产生答案所做的工作。
一般解决方案:
为了实现这一点,我们需要以某种方式通过我们的系统传递一个“上下文”,我们可以在处理过程中添加一些事实。然后可以对这些事实进行格式化并呈现给用户。
具体可能的解决方案:
我知道有两种方法可以传递上下文。一种方法是增加每个函数以引入“桶”或集合,当需要将某些东西返回给用户时可以添加到该集合中。这将需要我们对函数/api 进行大量更改以接收、可能修改并将这个额外的变量传递给其他函数。
另一种方法是使用 ThreadLocal 变量,我们可以在线程中的任何位置检索它并填充数据。此外,我们希望通过将其包装在 java @Annotations 中来使此填充对开发人员无缝,然后可以由方面处理以填充此“上下文”。
我们想要探索的正是这种将 ThreadLocal 用作不可见的隐藏“上下文”的想法。
具体来说:
因此,我们正在研究的基本思想是@Annotate 方法,以便可以根据传递给函数的参数或从函数检索的结果将一些事实添加到 ThreadLocal 变量中。这样,我们可以在遇到函数时对其进行装饰,并且这些函数会“自动”找到上下文并按照注释定义中指定的方式对其进行扩充。
问题(最后):是否存在已经存在的现有框架可以执行类似或类似的操作?
谢谢
-AP_