氚云本身是按模块进行管理的,氚云自身提供的应用模块,原则上就是独立、简单、通用、易移植。自主搭建的模块,为了方便分享给他人使用,也必须保持这样的结构。这里我重点谈的是自主搭建的整体规划。
我校所有的应用模块,均自主搭建。宗旨有三:
一、让数据成为活水,在整个系统里流动,不必重复输入相同的数据,而是实现直接调用。因此各种应用模块之间的数据是完全打通的,按需调用。
二、尽量保持每个应用模块的相对独立,每个应用模块数据在共享的同时又能独立,保持自身模块的完整性。
三、尽量减少汉字的录入,实现移动简约办公的理念,因此所有数据的调用,在搭建时均要考虑通过数字或字母组合形成具有唯一性的标题。
下面我逐个谈谈想法:
宗旨一、让数据成为活水,在整个系统里流动,不必重复输入相同的数据,而是实现直接调用。因此各种应用模块之间的数据是完全打通的,按需调用。
氚云的优势,在于表单之间的互相关联,数据间的调用非常灵活。各个模块之间的数据调用,是完全开放的,是系统级的调用,不需要指定某处做为接口,而是处处都是接口,那里有需要,那里就是接口。数据在表单里,表单关联表单进行数据传递,数据就形成活水,无所不在。
那么,先谈氚云自身搭建的应用模块,或者使用他人的模块时,实现数据互通的效果。有手工和自动两种实现方式。
其一、手工操作方式。先把【A表单】的数据导出,再复制到【B表单】导入模板,并导入更新【B表单】来实现。这样的手工操作是相对简单的,但需要大量的人工。
其二、自动实现方式:就需要把引进来的模块,进行适当修改,既要继续保持原有模块的独立性,又不必和其他模块产生关联,却可形成一个完整的数据调度。如果其他模块需要数据,可搭建扩展方式。因为氚云的业务规则的数据传递原则只能是:当前表单的数据,传递给目标表单。
打个比方:模块A里有【A表单】,模块B里有【B表单】,现在需要把【A表单】数据传递给【B表单】。
那么可以在【系统管理】建一个【A2B表单】作为总调度。至于为什么不直接在【A表单】里实现传递到【B表单】,我后面会另做解释,现在继续讲这种实现方法:
1、先创建【A2B表单】,如果做一个【系统管理】应用模块,在这个模块里面做各种表单。每个表单的主要功能,就是实现模块之间的数据传递、实现数据的最大化同步功能。【A2B表单】至少要有两个控件:{A2B共性控件}、{A2B唯一性控件}。
2、必须在【A表单】增加两个控件{A2B共性控件}、{A2B唯一性控件};再增加业务规则,把数据传递到【A2B表单】:
UPSERT(A2B表单,A2B表单.{A2B共性控件}==A表单.{A2B共性控件} AND A2B表单.{A2B唯一性控件}==A表单.{A2B唯一性控件} ,A2B表单.{A2B共性控件},{A2B共性控件},A2B表单.{A2B唯一性控件},A表单.{A2B唯一性控件} ,...此处是更多数据控件对接传递...)
3、必须在【B表单】增加两个控件{A2B共性控件}、{A2B唯一性控件};用来做数据传递的对接条件。
4、再在【A2B表单】里设置业务规则,把【A2B表单】的数据传递到【B表单】。
UPSERT(B表单,B表单.{A2B共性控件}== A2B表单.{A2B共性控件} ANDB表单.{A2B唯一性控件}==A2B表单.{A2B唯一性控件} ,B表单.{A2B共性控件}, A2B表单.{A2B共性控件} , B表单.{A2B唯一性控件},A2B表单.{A2B唯一性控件} ,...此处是更多数据控件对接传递...)
好了,上面就是在整体规则中我想说的【A2B表单】系统调度法,UPSERT可以改成其他语句。至于为什么不直接在【A表单】里实现传递到【B表单】,我这里也谈谈。
先说一下数据从【A表单】到【B表单】能实现的方法:
方法一、【B表单】可以是【A表单】的子流程,所有控件数据都可通过子流程实现最直接的传递,所有提交的数据都能传递。
方法二、【A表单】增加业务规则,直接对接目标【B表单】,所有提交的数据也都能传递。
方法三、就是上面我所说的【A2B表单】系统调度法,所有提交的数据也都能传递,这种方法相对方法一、二来说,显得有点造作,感觉是多余的。那么,为什么要这样做?就是接下来我谈的宗旨二。
宗旨二、尽量保持每个应用模块的相对独立,每个应用模块数据在共享的同时又能相对独立,保持自身模块的完整性。
我们做整体规划,必须从系统的灵活性去思考。最终的目标,既要把整个系统的数据盘活,又要保持每个应用模块的相对独立性、相对完整性。而不只是某两个表单或某两个应用模块之间的数据互通;我们需要调用的是所有的数据,包括之前已经存在的数据,还有新增的数据。那么创建【系统管理】应用模块,就等同于在氚云应用里搭建一个系统中枢,通过【系统管理】来调配所有模块数据资源,增加智能化的数据处理模式。所有应用的模块,不管是氚云自身推荐的模板【A表单】,还是共享他人的模板【B表单】,只要在【A表单】、【B表单】中增加{共性对接控件}、{唯一性对接控件},在【系统管理】中增加一个【A2B表单】,在【A2B表单】增加业务规则把数据传递给【A表单】、【B表单】就行了。这样【A表单】、【B表单】互相间也不需要建立任何的关联,自身的数据仍然是独立的、完整的。
如果【A表单】的数据以后还要传递给更多的表单,那么也只需要在【A2B表单】或【A2N表单】中增加相应的业务规则就行了,所有的数据调度,都放在【系统管理】应用模块去实现。
不管是标准版,还是专业版,尽量把模块间数据交互的智能化实现过程,统一放在【系统管理】应用模块里。
这样做的优势,在标准版里,分享给他人完全不受影响。除了【系统管理】模块之外的其他模块,都是完全可以分享给他人使用的。特别是两个单位或多个单位结盟做开发的时候,分享之后再做对接,就可以大大提升开发效率。如果同一个单位里多人同时做开发,那么把模块分工各自搭建,最后在【系统管理】里面再搭建数据互通的【A2B表单】就行了。
这里再拓展一下:如何在没有使用关联表单的【B表单】中实现对【A表单】中非提交的数据进行调用。
这个功能只能在专业版里通过后端代码才能实现。我目前还没有做,但方法肯定是能实现的。
在宗旨一里所说的【A2B表单】系统调度法,只能在【A表单】提交数据时,才能把数据传递给【A2B表单】,再传递给【B表单】,这是标准版和专业版都能实现的方式。
现在说的,是通过在【A2B表单】写后端代码来实现对有共性的所有数据都可实现传递。方法如下:
通过提交一条数据,从这条数据中获取{A2B共性控件} ,然后通过代码创建遍历列表,获取【A表单】有共性的记录,然后通过循环逐条获取遍历列表中的记录数据,再通过语句来实现对【B表单】中满足
“B表单.{A2B共性控件}== A2B表单.{A2B共性控件} AND B表单.{A2B唯一性控件}==A2B表单.{A2B唯一性控件}”
的对应数据的记录实现数据处理。
这样【A表单】、【B表单】因为没有后端代码,即使是以后分享出去,仍然可以正常运行。
说一句题外话,目前氚云专业版之所以不能随意提供模块分享功能,就是因为前端代码和后端代码极有可能会导致模块完全没有办法运行。希望氚云专业版也拓展模块分享功能,在他人使用来自专业版分享的模板时,如果是标准版用户,就直接禁用代码。同是专业版用户,也提示“专业版分享的模块可能会因为代码导致运行出错,是否要移除全部代码?”或者对专业版用户也直接禁用代码即可。这样做会整体提升氚云的服务质量。惠及大众!
最后,谈谈宗旨三。
宗旨三、尽量减少汉字的录入,实现移动简约办公的理念,因此所有数据的调用,在搭建时均要考虑通过数字或字母组合形成具有唯一性的标题。
氚云本身的标题组合,是可灵活重组的,只有流水号是唯一性的。但在数据处理的时候,都是只能用标题来做标识。特别是在数据更新导入的时候,如果标题不是唯一性的数据,就可能会导致数据错位而引发数据被破坏或无法实现更新。所以我在做表单时,每个表单我都做一个单文本控件{标题},平时就隐藏起来,然后标题使用公式实现唯一性,表单的{标题数据}={标题}。
我校所有学生管理,每个班的学生共用一个班务钉号,所有应用都是通过数学或字母组合来获取学生姓名,在【学生基数】表单中:
{标题}={班别}+{姓氏首字母}+{宿位}
例如:2019级01班的张三住1栋203号房04号床位,那么他的记录标题就是“201901z张三120304”,这样在关联表单【学生基数】时,就可以通过"1901z"或“1203”来实现一键快速取值,根本不需要录入汉字。
好了,就分享这么多,希望对您有所帮助!