在一个项目中,可以创建和管理计算表,其中包含每个工作表。
它有一个所有者和两组用户:可以更改电子表格的用户和可以阅读电子表格的用户。电子表格中的每个单元格都可以作为文字内容,对同一工作表或函数的另一个单元格的引用
现在假设您要添加以下要求:
•应用程序现在应该支持第二种类型的引用:外部引用。
在这种情况下,引用涉及电子表格的单元格。
引用外部由id行表示;! col,其中id表示包含所需单元格的标识符电子表格(带有行地址; col)。
因此我根据域名拥有此代码源:
class BubbleDocs{
int nextDocumentId;
}
class User {
String userToken;
String username;
String password;
String name;
String email;
}
class Session {
DateTime LastAccess;
}
class SpreadSheet {
int id;
String spreadSheetName;
String ownerUsername;
LocalDate creationDate;
int numberRows;
int numberColumns;
}
class Access {
}
RemoteCellManager {
int spreadSheetID;
bool updated;
}
class Cell {
int cellRow;
int cellColumn;
boolean protect;
}
•出于可伸缩性的原因,可能会发生应用程序的分发 在多个服务器上,每个服务器负责管理叶子集 计算
因此,外部参考不能直接参考 另一张工作表的单元格可能会发生两张纸 有问题的计算(包含外部引用并在引用外部引用的计算)位于不同的服务器上。要解决此问题,请考虑使用新实体RemoteCellManager。
服务器和此实例的此实体的实例将在与服务器关联的电子表格的上下文中管理所有创建的外部引用。
因此,无论何时创建外部引用(在字段中要考虑的新类型实体),都应将其记录在此实体中。出于优化原因,每个外部引用都会保留引用的外部单元格的值。
如果更改了单元格,则应更新其所有外部引用。实体' RemoteCellManager'负责执行此更新。
对于这个解决方案,我将了解实体如何获得' RemoteCellManager'细胞已经改变的信息及其新值。
•出于性能原因,将限制外部参考的数量
可以在服务器上创建它们。
此数字等于100.
我对这个问题的解决方案是基于下一个代码源:
class ExternalReference {
int cellRow;
int cellCol;
int cellID;
}
class RemoteCellManager extends ExternalReference { }
relation ServerHasExternalReference {
ExternalReference playsRole reference {
multiplicity 0..100;
}
}
我的问题是,当Manager与引用有关系时,如何在Manager和Server之间建立关系?
答案 0 :(得分:0)
使用域建模语言(DML)更好地理解Manager和服务器之间的关系以及外部参考方法:
class ExternalReference {
int cellRow;
int cellCol;
int cellID;
}
class RemoteCellManager extends ExternalReference { }
relation RemoteCellManagerHasExternalReference {
RemoteCellManager playsRole manager {
multiplicity 1..1;
}
ExternalReference playsRole reference {
multiplicity 0..100;
}
}
根据解释所理解的,我的想法是将RemoteCellReference
扩展到ExternalReference
,然后我们需要使用共同关系来编码playsRole和multiplicity。