我正在开发一个应用程序,它接受一些原始输入数据并将其转换为通过一系列步骤计算最终结果。在这些步骤中的每个步骤中,存在可能的用户输入(例如,权重,选择相关行等)。我已经设置了基本分析,但我的目标是在多用户环境中部署它。我不希望发生的是一个用户设置他们的输入,让另一个用户改变一些输入,并且两者都得到意想不到的结果。
当用户输入应用程序时,我希望他们在开始会话时获得所有主数据库表的副本,然后能够更改所有输入(甚至可能添加原始数据) ,运行分析并生成与所有其他用户的输出分开的输出。此输出可能会导出到Excel,或者可能会在以后提取。然后,如果用户想要对实际的数据库表(其他所有用户都会看到)进行更改,他们可以提交部分或全部更改。
我是Oracle和APEX的新手,并且已经阅读了我可以阅读的所有文档和书籍,但需要帮助确定解决此问题的方法,或者至少是相关阅读。
答案 0 :(得分:1)
我认为你必须使用APEX Collections。
看http://docs.oracle.com/cd/E37097_01/doc/doc.42/e35127/apex_collection.htm
UPD:
您必须寻找顶级集合。首先:当用户登录时,为每个要更改的表创建一个空的顶点集合。集合名称必须像对应的表一样命名。然后,您可以为每个集合创建视图(让表名为“tmp_tab”):
create or replace view tmp_v as
select
t.c001 as id
, t.c002 as column1
, t.c003 as column2
from apex_collections t
where collection_name = 'tmp_tab';
然后在表tmp_tab的每个报告中加入此表,并在相应的集合上查看。报告代码如下:
select
t.id
, nvl(v.column1, t.column1) column1
, nvl(v.column2, t.column2) column2
from tmp_tab t
left join tmp_v v on v.id = t.id
然后,当用户编辑数据时,将此数据保存在表中,将其保存在集合中。完成所有更改后,如果用户想要为所有用户保存数据,请将数据从相应的集合移动到表中。这种方式最合适,并且您不会更改数据模型。