CN117897710A - 解决工业数据转换问题的人工智能方法 - Google Patents
解决工业数据转换问题的人工智能方法 Download PDFInfo
- Publication number
- CN117897710A CN117897710A CN202280058371.8A CN202280058371A CN117897710A CN 117897710 A CN117897710 A CN 117897710A CN 202280058371 A CN202280058371 A CN 202280058371A CN 117897710 A CN117897710 A CN 117897710A
- Authority
- CN
- China
- Prior art keywords
- data
- block
- user
- programming
- conversion
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 432
- 238000006243 chemical reaction Methods 0.000 title claims abstract description 121
- 238000013473 artificial intelligence Methods 0.000 title claims abstract description 104
- 230000008569 process Effects 0.000 claims abstract description 319
- 230000009466 transformation Effects 0.000 claims abstract description 45
- 238000012549 training Methods 0.000 claims abstract description 38
- 238000013501 data transformation Methods 0.000 claims abstract description 12
- 230000001131 transforming effect Effects 0.000 claims abstract description 4
- 238000010801 machine learning Methods 0.000 claims description 141
- 238000011161 development Methods 0.000 claims description 45
- 238000012545 processing Methods 0.000 claims description 36
- 238000000844 transformation Methods 0.000 claims description 30
- 230000006399 behavior Effects 0.000 claims description 20
- 238000012795 verification Methods 0.000 claims description 20
- 230000009471 action Effects 0.000 claims description 14
- 238000004458 analytical method Methods 0.000 claims description 13
- 239000011159 matrix material Substances 0.000 claims description 12
- 230000003993 interaction Effects 0.000 claims description 9
- 238000013528 artificial neural network Methods 0.000 claims description 8
- 238000004422 calculation algorithm Methods 0.000 claims description 7
- 230000007704 transition Effects 0.000 claims description 6
- 230000003287 optical effect Effects 0.000 claims description 5
- 230000003321 amplification Effects 0.000 claims description 4
- 238000004891 communication Methods 0.000 claims description 4
- 238000003199 nucleic acid amplification method Methods 0.000 claims description 4
- 230000004044 response Effects 0.000 claims description 4
- 238000010200 validation analysis Methods 0.000 claims description 4
- 230000001149 cognitive effect Effects 0.000 claims description 3
- 230000008451 emotion Effects 0.000 claims 1
- 230000006870 function Effects 0.000 description 20
- 238000010586 diagram Methods 0.000 description 18
- 230000010354 integration Effects 0.000 description 14
- 238000011156 evaluation Methods 0.000 description 11
- 238000003860 storage Methods 0.000 description 11
- 238000012360 testing method Methods 0.000 description 11
- 230000008901 benefit Effects 0.000 description 10
- 238000004590 computer program Methods 0.000 description 10
- 238000007726 management method Methods 0.000 description 8
- 238000012986 modification Methods 0.000 description 7
- 230000004048 modification Effects 0.000 description 7
- 230000036961 partial effect Effects 0.000 description 7
- 238000012546 transfer Methods 0.000 description 7
- 238000013461 design Methods 0.000 description 6
- 230000003213 activating effect Effects 0.000 description 4
- 238000013506 data mapping Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000000670 limiting effect Effects 0.000 description 3
- 238000007619 statistical method Methods 0.000 description 3
- 238000007476 Maximum Likelihood Methods 0.000 description 2
- 230000000712 assembly Effects 0.000 description 2
- 238000000429 assembly Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000011960 computer-aided design Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 238000013178 mathematical model Methods 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 239000000872 buffer Substances 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012067 mathematical method Methods 0.000 description 1
- 238000000491 multivariate analysis Methods 0.000 description 1
- 238000003825 pressing Methods 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000014616 translation Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 230000003442 weekly effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
- G06F8/22—Procedural
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B13/00—Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion
- G05B13/02—Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion electric
- G05B13/0265—Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion electric the criterion being a learning criterion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/33—Intelligent editors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/34—Graphical or visual programming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
- G06F9/453—Help systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/088—Non-supervised learning, e.g. competitive learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/098—Distributed learning, e.g. federated learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Health & Medical Sciences (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Automation & Control Theory (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Human Computer Interaction (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种使用人工智能(AI)来解决工业数据转换问题的方法,包括在第一次迭代中接收初始转换集,以及在至少一次相应的后续迭代中接收经训练的转换集,初始和经训练的转换集中的每一个都具有包括输入和目标数据集的组件以及用于将输入数据集转换成目标数据集的处理流程,其中经训练的转换集使用由AI工具生成的训练数据,该AI工具修改来自前一次迭代的转换集的至少一个组件。对于每次迭代,将经训练的转换集的组件与先前迭代的已训练的转换集的相应组件进行比较,并与使用相应组件从执行中存储的相交数据进行比较。如果基于比较找到合适的匹配,则选择用于解决工业数据转换问题的经训练的转换集。
Description
相关申请的交叉引用
本申请要求2021年7月12日提交的美国临时专利申请序列号63/220,710的优先权,该申请通过引用整体结合到本文。
技术领域
本公开涉及协作环境,协作环境提供与专注于工业数据操纵的数据转换相关的解决方案。它包括简单的开发环境,有助于这些解决方案的设计。
背景技术
在复杂***中,数据可以在使用不同参数、格式、数据结构和/或编程语言的不同应用程序之间共享。工程师需要专业知识来实现不同应用程序之间的数据共享。不兼容可能出现,需要解决方案。工程师可能投入大量资源来开发解决方案。
解决方案可以透明、无记录地实施,并且不会被可能需要类似解决方案的同事发现。类似的解决方案也可能由整个公司的其他工程师实施,例如,用于类似的数据转换任务,从而导致效率低下和“重新发明轮子”。此外,这些解决方案可以被其他人应用并取得不同程度的成功,而解决方案的作者不知道成功或失败。此外,如果没有反馈,解决方案应用的成功和失败都无法用于改进解决方案。
此外,虽然发布的数据转换问题解决方案可能适用于大多数具体情况,但通常需要定制解决方案来满足手头特定数据转换问题的要求。当解决方案的用户经由传统渠道向解决方案的作者请求定制时,解决方案的定制可能是复杂且耗时的,即使是为了实现小的改变。实施改变的作者或工程师需要具备必要的技能水平,并能够使用所需的软件应用程序和编程语言。使用这些软件应用程序可能需要昂贵的许可费。开发和定制过程可能很繁琐,需要手动处理从某些数据集(如图形数据集)中提取信息,可能需要手动处理提取信息。
一旦开发者开发了软件程序的源代码,软件程序就可以由开发者发布并由用户安装。用户可能有软件程序无法满足的特定需求。例如,用户可能想要更改源代码中包含的算法,以正确执行特定类型的数据。然而,通常用户无权修改源代码。相反,具有更新算法的软件程序的新版本需要由开发者发布并由用户安装。
从开发者的角度来看,开发者可以使用一个开发平台来编写和编辑源代码。开发者可以执行软件程序,例如用于测试新编辑的源代码。然而,每次源代码改变时,开发者必须在执行之前重新编译软件程序。
例如,在测试期间,开发人员可以在执行期间识别导致不希望的影响的源代码片段,并确定需要对该片段进行修订。开发者然后退出软件程序的执行,修改该段,重新编译软件程序,并从头重新开始软件程序的执行。这意味着开发者必须等待直到重启的软件程序执行该段,以便测试该段。如果开发者对测试该段的结果不满意并选择进一步修改该段,则从头开始重复停止执行、编辑该段、重新编译软件程序和执行软件程序的整个过程。虽然传统的方法和***通常被认为满足其预期目的,但是在本领域中仍然需要共享工业数据转换问题的解决方案。此外,在应用解决方案以修订解决方案时,仍然需要分享成功和失败。此外,在本领域中仍然需要在应用该解决方案来开发相关解决方案时利用与成功和失败相关的信息。此外,本领域仍然需要降低从数据集中提取信息的任务的复杂性、技能和许可证要求以及手动执行。此外,在本领域中仍然需要简化软件应用从开发到测试或执行的过渡。本公开提供了用于应对这些挑战的***和方法。
发明内容
下述图示实施例的目的和优点将在下述说明中阐述并体现出来。所示实施例的其他优点将通过书面描述和权利要求以及附图中特别指出的设备、***和方法来实现和获得。为了实现这些和其他优点,并且根据所示实施例的目的,在一个方面,公开了一种由计算机***使用人工智能(AI)实现的用于解决工业数据转换问题的方法。该方法包括在第一次迭代中接收初始转换集,并在至少一次相应的后续迭代中接收经训练的转换集,初始和经训练的转换集中的每一个都具有包括输入数据集、目标数据集和用于将输入数据集转换成目标数据集的过程流的组件,其中经训练的转换集使用由AI工具生成的训练数据,该AI工具修改来自前一次迭代的转换集的至少一个组件。该方法还包括,对于每次迭代,将经训练的转换集的组件与先前迭代的经训练的转换集的相应组件进行比较,并使用随着时间的推移从过程流的执行或开发中存储的历史数据的相应组件与相交数据进行比较。如果基于比较找到合适的匹配,则选择经过训练的转换集来解决工业数据转换问题。
在一个或多个实施例中,对于每次迭代,ML工具可应用于经训练的转换集,以提出模拟转换集的ML解,并可寻求ML解的收敛性。
在一个或多个实施例中,该方法可进一步包括验证收敛的ML解。如果没有找到合适的匹配、验证不成功或者收敛失败,则可以应用AI工具来为下一次迭代生成训练数据。
在一个或多个实施例中,所述方法可进一步包括,对于每次迭代,接收可用的用户反馈,其中所述用户反馈指示对应于所述迭代的初始或训练转换集是否可为用户接受,所述用户反馈与所述初始或训练转换集相关联地存储,并用于解决后续工业数据转换问题。
在一个或多个实施例中,历史数据可包括一个或多个用户社区随时间执行过程流的输出数据、随时间开发或执行过程流的用户社区体验的日志数据以及随时间开发或执行过程流的中间结果的应用数据。
在一个或多个实施例中,人工智能工具可识别对收敛和/或验证影响最大的转换集的基本变量。
在一个或多个实施例中,基本变量的识别可使用拉丁方(Latin Square)算法。
在一个或多个实施例中,人工智能工具可使用神经网络来识别和修改转换集。
在一个或多个实施例中,AI工具可包括MS认知工具包、PyTorch和TensorFlow中的一个或多个,ML工具可包括ML.Net、PyTorch和Accord.Net中的一个或多个。
在一个或多个实施例中,收敛可使用矩阵分析、高斯转换、傅立叶或快速傅立叶转换、拉普拉斯转换和矩阵分析中的至少一种。
在一个或多个实施例中,转换集的过程流可包括至少第一和第二编程块,所述第一和第二编程块均具有输入块和输出块,其中所述第一和第二编程块兼容执行指定,即当所述第一编程块的输出块兼容将数据传递至所述第二编程块的输入块时,所述第一和第二编程块将在执行期间连续执行。该方法还可以包括基于在第一编程块的输出块和第二编程块的输入块之间执行期间传递数据的兼容性概率,从候选编程块中选择第一和第二编程块之一以推荐给用户。
在一个或多个实施例中,该方法可进一步包括应用机器学习来确定兼容性的概率。
在一个或多个实施例中,该方法还可以包括基于对第一和第二编程块中的另一个的开发或执行期间的用户行为和/或用户动作和/或在第一和第二编程块中的另一个的执行期间遇到的执行问题的确定,确定推荐第一和第二编程块中的一个的机会。
在一个或多个实施例中,与编程块或过程流相关的日志数据可包括与每个用户的编程块或过程流的开发或执行相关的至少一个时间戳信息,该时间戳信息涉及用户动作数据、用户行为数据、警告数据、错误和/或成功数据、用户反馈数据、任何相关对话的内容,应用数据包括在编程块或过程流的开发或执行期间生成的输入数据和中间和/或临时信息数据中的至少一个。
在一个或多个实施例中,用户行为数据可基于开发或执行过程流或编程块时用户与图形用户界面的交互。
在一个或多个实施例中,该方法可进一步包括从用户输入设备(UID)接收中断信号,其中用户与图形用户界面的交互由中断信号确定。
在一个或多个实施例中,可使用机器学习进一步确定用户行为,以基于用户与GUI的交互和日志数据和/或应用数据之间的相关性确定用户行为。
在一个或多个实施例中,该方法可进一步包括向开发编程块或过程流的作者用户通知指示其他用户在编程块或过程流执行期间遇到的问题的日志数据和/或应用数据。
在一个或多个实施例中,经训练的转换集的输入数据集可包括图形数据集,经训练的转换集的过程流配置为对图形数据集执行光学图形字符识别(OGCR)。该方法还可以包括由AI工具和ML工具中的至少一个建议用于放大图形数据集的放大因子,并配置经训练的转换集的处理流程以生成基于放大因子放大的中间数据集并对中间数据集执行OGCR。
在一个或多个实施例中,中间数据集可为矢量图形数据集或探测器矢量图形数据集。在一个或多个实施例中,该方法可以自主执行。
在一个或多个实施例中,该方法可进一步包括自动提供下一初始转换集,自动对下一初始转换集重复该方法。
另一方面,公开了一种通过计算机***使用人工智能(AI)解决工业数据转换问题的方法。该方法包括:a.在第一次迭代中接收初始转换集,该初始转换集包括输入集、目标数据集和用于将输入数据集转换成目标数据集的过程流,该过程流是在第一次迭代中从至少一个字典中获得的;b.在至少一个相应的后续迭代中接收使用训练数据的训练转换集,该训练转换集修改来自先前迭代的转换集的输入数据集、目标数据集和过程流中的至少一个;以及c.对于至少一个相应后续迭代的每次迭代:c1.当可用时接收用户反馈,该用户反馈指示对应于迭代的初始或训练的转换集是否可被用户接受;c2.如果接收到用户反馈,则与相应的初始或训练转换集相关联地由用户反馈更新有效结果数据库;c3.如果用户反馈指示过程流是不可接受的,或者响应于没有接收到用户反馈,寻找有效结果数据库中的结果与来自先前随时间生成的训练数据的交集数据、来自用户社区随时间执行过程流的输出数据、关于用户社区随时间开发或执行过程流的经历的日志数据、以及关于随时间开发或执行过程流时的中间结果的应用数据之间的匹配;c4.如果找到匹配,则使用机器学习(ML)工具提出ML解,直到可以为ML解转换集找到收敛;c5.如果发现ML解转换集收敛,则基于其是否与有效结果数据库中的数据匹配来验证ML解转换集;c6.如果验证成功,则更新验证结果数据库以指示成功的收敛和验证,更新训练数据和至少一个字典以包括ML解转换集,该ML解转换集可用于当前使用和未来使用以找到过程流作为数据转换问题的解决方案;和c7.如果在步骤c3中没有发现匹配,则在步骤c5中验证不成功,或者收敛失败,即c7a.使用AI工具生成训练数据以修改下一个训练的转换集的过程流、输入数据集和目标数据集中的至少一个;还有c6b.提供下一个经训练的转换集作为在操作b接收的经训练的转换集。
在另一方面,公开了一种转换***,其包括配置为存储多个可编程指令的存储器和与存储器通信的至少一个处理设备。在执行多个可编程指令时,至少一个处理设备被配置成执行任何所公开的方法。
另一方面,公开了一种嵌入有一个或多个计算机程序的非暂时性计算机可读存储介质。当由计算机***执行时,使得计算机***执行任何公开的方法。
附图说明
上文简要概述的本公开的更详细描述可通过参考各种实施例来获得,其中一些实施例在附图中示出。虽然附图图示了本公开的选择实施例,但是这些附图不应被认为是对其范围的限制,因为本公开可以允许其他等效的实施例。
图1A是示出根据本公开的实施例的数据转换***的示例基础结构的框图,包括组件和数据流;
图1B是示出根据本公开的实施例的软件执行平台的示例基础结构的框图,包括组件和数据流;
图1C是示出根据本公开的进一步实施例的数据转换***的示例基础结构的框图,包括组件和数据流;
图2A是根据本公开的实施例的具有活动过程流编辑器的数据转换***的开发和执行(D&E)平台的示例图形用户界面(GUI)的屏幕截图;
图2B是根据本公开的实施例的具有活动代码编辑器的数据转换***的D&E平台的示例GUI的屏幕截图;
图2C-2F是根据本公开的实施例,在使用图2A所示的过程流编辑器来操纵显示在GUI的工作区域中的编程块时,D&E平台的GUI的屏幕截图;
图3示出了根据本公开的实施例的解决简化数据转换问题的示例方法的流程图;
图4示出了根据本公开的实施例的在D&E平台的当前应用会话期间更新编程块时重新编译编程块的示例方法的流程图;
图5示出了根据本公开的实施例的在当前编程块的开发期间和/或在当前编程块的重新编译版本的执行期间使用在前编程块的缓存输出数据的示例方法的流程图;
图6A示出了根据本公开的实施例的图1A或1B所示的AI服务器组的示例总体操作过程流的流程图,AI服务器组被配置用于在过程流的开发或执行期间与用户交互;
图6B示出了根据本公开的实施例的图1A或1B所示的ML服务器组的示例总体操作过程流的流程图,ML服务器组被配置用于独立于与用户的交互自主开发过程流;
图7是根据本公开的实施例的用于在过程流的开发和/或执行期间实现示例方法的流程图,该方法用于使用概率树图来建议要包括在过程流中或要在过程流中执行的编程块;和
图8是根据本公开的实施例的实现图1A、1B或1C所示的数据转换***的组件的示例性计算机***的框图。
在可能的情况下,使用相同的附图标记来表示附图中共有的相同元件。然而,在一个实施例中公开的元件可以在没有具体叙述的情况下有益地用于其他实施例。
具体实施方式
现在将参考附图,其中相同的附图标记表示本主题公开的相似结构特征或方面。出于解释和说明而非限制的目的,根据本公开的数据转换***的基础结构的示例性实施例的示意图在图1A-1C中示出,并且通常分别由附图标记100、100B和100C表示。根据本公开的数据转换***的其他实施例或其方面在图2A-8中提供,如下所述。
图1A所示的数据转换***100包括由用户操作的一个或多个客户机102、一个或多个服务器,包括一个或多个web服务器104、一个或多个应用服务器106、人工智能(AI)服务器组108、日志服务器112、输出数据服务器114和应用数据服务器116。用户可以是开发(创建和/或修改)和/或执行过程流和/或编程块的作者,或者是执行过程流的非开发者用户。客户机102和服务器可以经由网络101(例如互联网)和/或有线或无线通信(例如以太网、WiFi等)进行通信。
客户机102配备有开发和执行(D&E)平台,该平台可以实现为桌面应用程序(如图1B和1C所示)或基于网络的应用程序(如图1A所示)。D&E平台包括图形用户界面(GUI),通过GUI用户可以从过程流和编程块的相应目录中选择过程流和/或编程块,开发过程流和/或编程块,以及执行过程流,所有这些都在单个集成环境中进行。在一个或多个实施例中,用户可以进一步与用户社区交互,例如交换关于体验、推荐、反馈等的信息。在一个或多个实施例中,当实现为如图1A所示的基于web的应用时,可以由为用户和数据流提供web服务的web服务器104向客户机102提供D&E平台。web服务器104可以被布置为例如web服务器群。GUI可以在发起web会话时由web服务器104提供给客户机102,并且可以由应用服务器106支持。GUI可以例如作为网页来提供。应用服务器106可以被指定执行经由GUI请求的高要求任务,例如编译编程块的源代码、执行过程流等。在一个或多个实施例中,应用服务器106为用户发起的web会话执行单独的应用会话。
在一个或多个实施例中,当被实现为如图1B和1C所示的桌面应用时,D&E平台可以由驻留在相应客户机102上的D&E应用来提供。GUI和高要求任务都可以由D&E应用程序执行。
术语“D&E会话”一般是指从GUI的启动到终止,用户出于开发、执行和/或协作目的与GUI的交互。D&E会话可以是基于web或基于桌面的,并且可以涉及web和/或应用程序会话。术语“D&E会话”、“应用程序会话”和“web会话”可以互换使用,而不限制该术语的使用。
不同实施例中的数据转换***100、100B、100C可以包括客户机102以及web服务器104、应用服务器106和AI服务器组108的任意组合。例如,在一个或多个实施例中,D&E平台可以由应用服务器106直接提供给客户机102,而不需要网络服务器104。在一个或多个实施例中,D&E平台被实现为由客户机102执行的桌面应用程序,例如使用WindowsPresentation Foundation(WPF)框架。在一个或多个实施例中,可以使用可以通过相应客户机102的浏览器访问的网络应用来实现本公开。在一个或多个实施例中,用于在客户机102上实现D&E平台的应用驻留在客户机上,并且客户机102作为用于提供D&E平台的独立***运行。
在一些实施例中,提供了AI/ML服务器组108,但是在其他实施例中没有。在一些实施例中,D&E平台提供了用于开发和执行的集成平台,如图1B所示的集成D&E引擎160所示。在一些实施例中,D&E平台仅提供开发或执行能力,或者提供开发和执行能力,但不是作为集成平台。转换***100、100B和100C的特征作为示例示出,并且本公开包括具有图1A、1B和1C所示的各种特征的混合的不同实施例。
在一个或多个实施例中,可以包括AI/ML服务器组108,用于了解已经执行的数据转换;探索不同的可能转变;识别指示执行过程流的问题的用户行为;通过从先前执行和/或探索的数据转换和/或从识别的用户行为进行推断来做出推荐。
数据转换***100包括若干数据服务器,包括日志数据服务器112、输出数据服务器114和应用数据服务器116,每个服务器具有至少一个用于存储数据的储存库和至少一个用于管理数据存储和检索的处理器等。它们一起可以包括例如关系数据库、关系数据库管理服务器(RDBMS)如SQL服务器和文件服务器(例如用于存储压缩文件)。每个RDBMS存储(例如,与过程流和编程块相关的)数据,例如会话信息标识(ID)(例如,用于开发它的开发会话、修改它的训练会话、执行它的执行会话)、时间戳和文件路径信息。以这种方式,存储在不同服务器(例如,日志数据服务器112、输出数据服务器114和应用数据服务器116)的不同储存库中的数据可以通过诸如会话ID和/或时间戳的公共信息来关联。
日志数据服务器112包括至少一个管理处理器107和一个或多个存储一般日志数据的关联储存库109。客户机102、web服务器104和应用服务器106中的每一个都可以维护由日志数据服务器112存储的日志数据。日志数据可以与单独的客户机102或单独的应用服务器106相关联和/或按情境聚合(例如,按办公室、地理区域、语言、产品、任务等。日志数据可以包括例如与关于用户动作数据(打开、关闭、编辑、开始执行、用户行为、请求帮助等)的编程块或过程流的开发或执行相关联的时间戳日志信息、警告数据、错误和/或成功数据、用户反馈数据、任何相关对话的内容、管理数据、关于失败执行的数据、关于调试的数据、关于用户输入设备(UID)中断信号的数据、日志和日志条目的标识、过程流名称、D&E平台和AI***集108的版本等。
日志数据可以由客户机102直接提供和/或从D&E会话提供,例如由任何应用服务器106或在客户机102上执行的应用来实现。用户相关数据可以包括关于正在执行的应用程序的用户反馈以及与元素相关联的任何对话的内容(例如被配置为向用户请求文件、向用户提供帮助、通知用户操作成功等的对话)与D&E会话相关联。日志数据服务器112存储的数据可以与输出数据服务器114共享,例如与输出数据一起存储在其储存库113中。
输出数据服务器114包括至少一个管理处理器111和一个或多个存储输出数据的相关联的储存库113。输出数据是由过程流或编程块在执行时输出的数据。网络服务器104可以向输出数据服务器114提交每个终端用户的输出数据以存储在其中。
应用数据服务器116包括至少一个管理处理器115和一个或多个存储应用数据的关联储存库117,该应用数据包括例如每个web会话或应用会话的输入和临时或中间执行信息数据。AI/ML服务器组108可以在任何D&E会话期间或在连续执行训练的同时,单独或按组向相关联的储存库请求:来自应用数据服务器116的输入数据、来自输出数据服务器114的输出数据、来自日志数据服务器112的日志数据以及来自字典服务器610的预定义字典(如图6A所示)。通过使用关于当前web会话的数据(例如,与特定用户相关的数据)、来自预定义词典的数据以及在客户机102和应用服务器106之间交换的输入或输出数据的队列来确保快速数据传输,可以提高性能。
D&E平台可以由用于创建和编辑编程块的代码编辑器(CE)122、用于从编程块创建过程流并编辑过程流的过程流编辑器(PFE)124、用于编译编程块源代码126的编译器126以及用于通过执行相应过程流的编程块来执行过程流以执行不同种类的任务的执行引擎128来实现。
每个过程流提供了用于解决特定数据转换问题的复杂解决方案(意味着软件程序)(例如,通过转换来自输入数据集(例如,***A的数据库)的数据来准备目标数据集(例如***B的配置文件)。单个过程流允许数据转换和/或传输,其中数据被转换然后例如从输入数据集传输到目标数据集。过程流由编程块形成。
每个编程块包括用于过程流的基本任务的编程解决方案(例如,从***A的数据库获取表格的数据)。过程流的编程块是过程流的构建块,并且可以在许多不同的过程流中重新使用(例如,通过改变编程块的一个或多个参数的值,编程块将从相同的数据库或不同的数据库获得另一个表的数据。)这样,编程块可以在不同的过程流中使用。编程块通常提供用于转换、存储或移动数据的方法,并且可以进一步提供用于与用户通信的方法和/或包括编程块作者的每个设计的逻辑。一般而言,编程块的目的是为原始数据转换问题(例如,将XLSX文档转换为XLS文档)提供单一解决方案,并可在不同的过程流中重新使用。
编程块可以用不同的语言编程,例如C#、visual basic(VB)和其他编程语言都是可能的。D&E平台的PFE 124可以用图形表示D&E平台提供的GUI中的每个编程块,例如用矩形形状(参见图2A中的编程块222(不限于特定形状))。
编程块运行至少需要两个文件,即源代码文件和通过编译源代码创建的当前编译的程序集。该汇编可以存储在例如共享库中(例如动态链接库(DLL)文件)。可以修改源代码文件,然后将其重新编译为存储在DLL文件新版本中的程序集新版本。源代码可以按需编译。按需编译可以通过用户操作来启动,例如激活GUI中的适当按钮或等效按钮。
编程块可以可选地包括可用于编译和/或执行的附加文件,称为资源。资源可以包括提供功能的附加DLL文件、一个或多个模板文件等。对于某些编程块来说,资源是编程块运行所必需的。
编程块或过程流的创建通常可以包括将可搜索属性与编程块或过程流相关联,例如标题、编程块或过程流的功能描述、编程块或过程流被分配到的类别(例如,比较两个XLSX文件的编程块可以在MicrosoftTM ExcelTM类别或通用比较类别中)、参与编程块或过程流开发的一个或多个用户名、版本等。
当用户决定改变编程块的源代码并重新编译该编程块(例如通过使用代码编辑器122)时,在重新编译之前,该编程块的当前加载的汇编被自动从当前D&E会话中卸载。卸载过程释放编程块的DLL文件(或等效文件)的锁定。然后,编辑后的源代码被重新编译到同一编程块的DLL文件中,DLL文件中的程序集被立即加载回同一当前D&E会话。编程块的新编辑和编译的汇编然后可在编译后立即在当前过程流中执行(如图4所示)。
因此,D&E平台为用户提供了开发和/或修改编程块的手段,每个编程块包括定义算法的源代码,将编程块组合成过程流以定义算法,执行编程块或过程流,停止执行,存储来自被执行的每个编程块的输出,修改包括在过程流中的任何编程块的源代码,激活GUI中的标签以编译修改的源代码,根据需要使用存储的输出从选定位置恢复执行(包括修改的和新编译的源代码)。由于过程流是模块化的并且被分成多个编程块,因此用户更容易测试源代码被改变的确切位置,而无需改变当前执行状态并且无需在被测试的位置之前重复执行。
编程块可以包含表示可在编程块中使用的一个或多个数据集的参数。在编程块执行开始之前,可以在使用过程流编辑器124的同时设定参数的值。参数的值会影响编程块在执行过程中的行为。例如,当在过程流编辑器124中时,用户可以右击编程块,并被提供用于编辑编程块的参数的下拉菜单。每个参数都可以有名称、类型、描述和值。编程块的作者可以通过指定参数名称、类型和说明来定义参数。在存储参数值之前,可以对参数值进行归一化处理。
在示例中,作者可以设计编程块,该编程块打开存储在具有后缀“.pdf”的文件夹中的所有文档。编程块的算法在打开的pdf文档中搜索表格和图形并创建表格和图形的输出摘要列表。本例中的作者通过定义以下参数修改了编程块:
用户随后选择(通过从目录中拖放到工作区域中)编程块的编译和发布版本,并将所选择的编程块放入位于工作区域中的过程流中。用户使用流编辑器124如下设定参数值。
用户执行过程流并意识到.pdf文档在编程块的摘要输出列表中不引用(来自子文件夹\my workspace\PDFs\project1\manuals\)。为了排除故障,用户更改了参数search_in_subfolder的值,如下所示:
然后,用户再次执行过程流,并对结果感到满意,因为表和图的摘要列表现在包含了对所有预期.pdf文档的引用。
过程流是具有定义的执行顺序的编程块的集合,用于帮助用户解决复杂的问题。如上所述,每个编程块都是为基本任务提供解决方案的程序。过程流可以被理解为编程块的模块化集合,其中每个编程块可以被认为是简单的软件程序,该软件程序理论上可以在传统的软件开发过程中被编译成单独的可执行文件。
过程流可以包括条件分支或循环。可以通过按顺序连接编程块来顺序执行编程块,也可以在过程流中根据需要手动执行编程块。过程流可以包括一个或多个路径。每个路径可以包括单个编程块或一系列相连的编程块。每个路径都与其他路径分开放置在过程流中。连接到过程流的条件决定点的一系列连接的编程块被称为过程流的分支。当执行给定的过程流时,可以在过程流中使用编程块参数来实现不同的结果或条件。
另外参考图2A和2B,分别示出了图形用户界面(GUI)的示例截屏200A和200B。截屏200A和200B的配置并不意味着是限制性的,而是意味着示出用户通过用户界面可用的功能。菜单区域202为用户动作提供图形元素。例如,菜单区域202包括图形元素,例如标签或过程流控制按钮。按钮是指用户可以激活的用户激活元素(UAE),例如通过使用用户输入设备(例如鼠标、键盘或触摸屏)来选择和激活(例如通过点击UAE)。例如,可以提供按钮来保存过程流、运行(意味着执行)过程流等)。术语“用户”可以指开发过程流或编程块的作者或者执行过程流或编程块的用户。
用户可以通过移动频繁使用的图形元素来修改菜单区域202,例如通过从目录中拖放过程流项目或工具,例如列出可用过程流和可用外部工具的相应树视图。工作区域204为用户提供区域来处理过程流和/或所选择的编程块。日志区域206记录关于执行结果、错误的信息以及关于会话期间用户动作的信息。
如果存在尚未被重新设计为作为编程块实现的以前或遗留的独立软件工具,则外部工具是可用的。这样,D&E平台可以集成其他可能感兴趣的工具。这些外部工具中的每一个都可以基于其工作环境进行捆绑,并且可以进一步包装成例如DLL或包装的可执行文件。外部工具可以作为单独的过程流来执行。此类可执行文件不包含在过程流中。相反,可执行文件可从目录中选择,如显示在功能区或分层菜单中,如树视图。这使得D&E平台成为过程流之外的软件工具的单一来源。
用户可以开始新的D&E会话或恢复用户存储的先前开始的会话。当存储当前D&E会话时,所存储的D&E会话由当前加载到工作区域204中的过程流及其属性(例如,当选择过程流编辑器标签203时可以看到)、加载到工作区域204中的一个或多个编程块的源代码、已经执行的过程流中的用户选择的编程块的缓存输出数据来定义。(仅存储选定编程块的缓存输出数据通过允许用户选择真正需要存储的输出数据来避免存储空间的浪费)。编程块在D&E会话期间输出的数据的输出对象可以序列化为JavaScript对象表示法(JSON)格式。序列化是将对象转换为字节流以存储对象或将其传输到内存、数据库或文件的过程。
会话的模式由UAEs选择,例如标签208,包括过程流编辑器标签203和代码编辑器标签205。屏幕截图200A示出了当使用通过过程流编辑器标签203选择的过程流编辑器124(如图1所示)时,D&E平台100的操作。当使用过程流编辑器124时,用户可以使用侧菜单210从可用过程流或编程块的目录中选择和添加一个或多个编程块和/或过程流。可用过程流的目录可以存储在应用数据服务器116中,或者与实现用户界面的桌面应用一起存储(这意味着在一个实施例中,D&E平台被实现为使用例如WPF框架的桌面应用)。
侧菜单210可以被配置为使用侧菜单标签212显示项目来显示从可用目录中选择的目录214,例如屏幕截图200A中所示的可用过程流(通过选择侧菜单标签212的过程流标签)或屏幕截图200B中所示的编程块(通过选择侧菜单标签212的编程块标签)。过程流和编程块的菜单可以分级配置,例如作为具有类别分支和可选的一级或多级子类别的树。可选地,分支可以是可折叠的和可展开的。过程流和编程块项目可以具有指示符,以指示它是否由用户定义(称为定制过程流或定制编程块),并且默认为用户私有(如果被授予权限,则可以与其他用户共享)或对其他用户公开可用(称为官方过程流或官方编程块)。
可以通过由过程流编辑器124提供的GUI将编程块移动到工作区域204中,例如通过使用定点设备从侧菜单210中拖放选定的项目。一旦位于工作区域204中,编程块就被表示为图形元素并且可以***纵。
可以通过由过程流编辑器124提供的GUI将过程流加载到工作区域204中,例如通过双击侧面菜单210中的所选项。包括在加载的过程流中的所有编程块在由过程流编辑器124提供的GUI中被表示为图形元素,在该GUI上图形元素可以***纵和连接,实现相关编程块的操纵和连接。过程流的加载导致过程流编辑器124的先前状态被擦除,并且过程流的执行被取消。相应地,一次只能加载一个过程流。
经由过程流编辑器124提供的GUI加载过程流(加载到工作区域204中,而不限于所描述的特定方法)的另一示例方法包括从侧菜单210拖放所选项目。在本例中,与双击不同,在删除过程流时,作者或用户会收到一条消息提示,询问他们是选择合并还是替换。
当用户选择“替换”(也称为加载)时,先前的过程流被移除,过程流的执行被取消,并且所选择的过程流被加载。
当用户选择“合并”时,包括在被丢弃的过程流中的所有编程块被添加到过程流编辑器124的当前状态。用户可以使用合并功能将两个或多个过程流的编程块的不同路径合并为一个复杂的过程流。这样,就不需要一个接一个地放置和配置编程块。
过程流编辑器124具有两个主要功能。任何用户都可以使用它来加载和执行适用于需要解决的问题的过程流。过程流编辑器124还可以用于通过连接编程块的输入和输出来安排编程块,这指定了它们的执行顺序。
可以通过代码编辑器122提供的GUI将编程块加载到工作区域204中,例如通过双击侧菜单210中对应于编程块的所选项。代码编辑器122提供的GUI可用于改变或检查所选择的编程块的源代码,并在需要时请求编译器126重新编译。用户还可以使用代码编辑器122创建新的编程块。
D&E平台可以由图1C中所示的集成引擎160提供为集成平台,但是其可以在图1A和1B的任一个中实现为基于网络或基于桌面的应用。该集成平台结合编译器126和执行引擎128为代码编辑器122和过程流编辑器124提供适当的GUI。这提供了集成的图形开发和执行环境,通过该环境,用户可以操纵对应于过程流和编程块的图形元素,指定编程块之间或合并的过程流之间的数据处理方向,通过编辑编程块的源代码修改数据的转换方式,以及编译和执行置于过程流中的编程块。
除了上述过程流编辑器124加载和修改过程流的功能以及代码编辑器122修改编程块的源代码的功能之外,用户可以通过激活过程流按钮207之一从菜单区域202选择运行命令,以使执行引擎128执行所选过程或过程流的所选部分。因此,提供D&E平台的菜单区域202和工作区域204的GUI提供了集成在一起的执行环境和开发环境。
解决数据转换问题时由过程流中的编程块执行的数据转换任务的一些示例包括从选定的Word文档中提取所有图像、读取扫描图片并识别扫描图片中的文本,以及分析数据库中的表格以识别重复项。这些任务仅出于说明目的而提供,并不旨在限制本公开的范围。
工作区域204还可以包括附加的UAE,例如具有不同功能的标签。UAE及其功能的一些示例包括简单表单编辑器、复杂表单编辑器和计算机辅助设计(CAD)类型的界面。
简单表单编辑器允许编程块的作者创建基本表单和/或对话表单,这提供了在编程块执行期间与用户交互的手段。简单表单编辑器可以包括具有分层(例如,树形)视图的简单表单编辑器菜单上的变量列表。简单表单编辑器菜单可以位于例如所显示的当前GUI的一侧。作者可以例如从代码编辑器的情境菜单中调用简单表单编辑器(例如通过右击编程块源代码的指定行),其中在执行过程中用户应该调用表单。
表单的模板可以包括例如可以根据用户定义划分的表格网格。简单表单编辑器允许编程块的作者将所列变量从分层视图或简单表单菜单拖放到简单表单编辑器的工作区域中显示的当前编辑或创建的表单的网格中。这样,用户可以根据定义范围内的变量类型将GUI组件放入表单中。范围(意味着编程块的源代码的类或方法)由先前选择的源代码行定义,并且范围被分析以搜索所有可访问的变量(包括编程块的参数)。用户可以从层次视图或简单表单菜单的列表变量中拖放到表单的网格中。一种GUI组件(文本框、复选框、列表视图、标签等)可以与变量一起使用,会根据变量的类型自动给出建议,并在表单网格的单元格中创建该组件的一个新的自动调整大小的实例。GUI组件及其相关变量的绑定是自动完成的,一旦通过源代码的设计行处的逻辑调用表单,就会在表单上执行编程块的过程中显示变量值。
复杂表单编辑器允许作者使用例如超文本标记语言(HMTL)格式来创建复杂表单和对话表单,以便在执行期间进行用户交互。
编程块以标准化形式编写,使得在一个编程块的输出与另一个编程块的输入之间具有兼容性的任何编程块可以以模块化方式组合。编程语言对于不是熟练程序员的用户来说是可以理解和阅读的。
如图2A所示,在工作区域204中,表示过程流220的编程块222的图形元素可以由用户图形化地连接,例如通过在编程块222之间绘制连接符224和/或提供连接信息,例如指示起始点、数据流方向和/或数据流顺序。可以使用定点设备和/或键盘命令来指定块之间的连接。例如但不限于,可以通过分配的执行号230来提供连接信息。在所示的示例中,具有等于零的执行数的编程块222将是起始点,意味着第一编程块222被执行。作为起始点的默认编程块222是其自动分配的执行号230等于零的编程块222,然而用户可以选择其他编程块222作为起始点。等于零的执行号230被自动分配给用户选择作为起始点的编程块222,并且路径234中随后的编程块222的执行号被按顺序重新计算。执行号230的值显示了执行的顺序和方向。没有执行号230的编程块222将不被执行。用户可以通过更改编程块之间的连接或设定选定编程块的起始点来影响编程块的执行次数。
在一个或多个实施例中,只能选择两个独立的未连接路径234中的一个来执行,并且不允许独立路径234的并行执行。在一个或多个实施例中,可以允许并行执行。连接的编程块222根据它们连接的顺序从一个编程块222向下一个编程块222的输入对象(由输入指令226指定)提供输出对象(由输出指令228指定)。类似地,连接的过程流220(例如,被合并的)根据它们被连接的顺序将来自一个过程流220的输出对象提供给另一个过程流220或编程块的输入对象。当两个过程流合并时,第一过程流的最后编程块222的输出指令228通过连接器224连接到下一过程流的第一编程块222的输入指令226。编程块222的作者可以将编程块222的输出对象的类型声明为D&E平台预定义的任何类型,或者可以将输出对象类型声明为作者添加到D&E平台的自定义类型,或者可以将输出对象类型声明为所使用的编程语言的基本类型。
D&E平台可以与AI/ML服务器组108交互,以使用机器学习来进一步确定正被连接在一起的编程块222在被连接以在它们之间传递数据时是否兼容。AI/ML服务器组108可以建议用于确保编程块222之间的兼容性的建议,例如通过建议使用不同的编程块,这将参考图7更详细地描述。例如,在图2C中,指定要输出的数据类型的编程块222A的输出指令228的数据类型必须与指定要输入的数据类型的编程块222B的输入指令226的数据类型兼容。在图2D中,当添加编程块222D时,AI/ML服务器组108可以确定编程块222A的输出指令228的数据类型是否与编程块222D的输入指令226的数据类型兼容。类似地,可以确定编程块222D的输出指令228的数据类型是否与编程块222B的输入指令226的数据类型兼容。AI/ML服务器组108可以帮助检测不兼容性。
然而,当确定被级联到过程流中的两个不同的编程块不兼容并且该兼容性不能被自动修复时,D&E平台结合AI/ML服务器组108可以警告用户关于功能失调的兼容性。用户可以手动定义两种不同类型之间的数据映射来解决兼容性问题。AI/ML服务器组108可以基于用户对可用的现有类似解决方案的体验来提供额外的支持,例如经由目录214来访问存储的代码和相关联的日志,并且提出针对复杂翻译的解决方案的可能路径。
例如,可以弹出窗口或以其他方式向用户提供窗口来执行手动数据映射,以解决第一和第二连续编程块之间的连接。例如,当确定经由第一编程块的输出指令228传递的输出类型与经由其输入指令226在第二编程块处预期的输入类型不同时,可以提供该窗口。
例如,该窗口可以显示第一编程块的输出指令228的可用输出字段(例如,field0-fieldX)和第二编程块的输入指令226的可用输入字段(例如,field0-fieldY)。用户可以使用GUI从可用的输出和输入字段中进行选择,例如通过将选定的可用字段拖放到选定区域中,或者选中/取消选中选定字段的框并将每个选定的输出字段与输入字段相关联。
手动数据映射可以提供附加特征,例如允许用户编辑字段的输入和/或输出值,例如通过组合(例如连接)两个或更多字段值、添加、移位、移动或移除字段值内的字符、对字段值内的字符应用逻辑或计算等。
侧菜单210的目录214中列出的编程块222和过程流220存储在客户机102(例如在日志服务器112中)或应用服务器106(例如在应用数据服务器116中)的一个或多个本地数据库和/或本地文件夹中。编程块222的源代码中使用的编程语言由语言标识符232指示。不同的编程语言可以用于编程块222。可用于创建编程块222的编程语言包括例如但不限于C#、VB,并且其他编程语言也是可能的。作者可以选择用于编写新编程块222的编程语言。
侧菜单210可以包括搜索字段240,用户可以在其中输入用于搜索或过滤结果的搜索项或过滤项,以使用编程块或过程流找到解决方案,例如通过使用存储的编程块或过程流的分层视图(例如树形视图)。可以基于诸如编程块或过程流的标题、编程块或过程流的描述、编程块或过程流被分配的类别、编程块或过程流的用户评级和/或过程流或编程块的子元素之类的术语(例如,通过定位树形视图中所示的树叶)来执行情境敏感搜索和过滤。
D&E平台为编程块和过程流的开发、编译和执行提供了单一环境。新编译的编程块被自动添加到用户目录214中(例如,用户可以通过侧菜单210中显示的分层视图访问该目录)。用户可以从目录中选择编程块,将编程块添加到工作区域204中正在开发的当前过程流中,并通过按下菜单区202中的按钮立即执行该过程流。
此外,用户可以通过转换到代码编辑器122来编辑过程流中的任何编程块的源代码(同时编程块被添加到的过程流在过程流编辑器124中仍然是活动的)。此外,可以在不退出代码编辑器122或过程流编辑器124的情况下编译新编辑的编程块。当过程流编辑器仍然活动时,新编译的编程块可以在过程流内执行,使得它在编程块成功编译后立即基于对源代码的编辑来改变过程流的行为。因此,可以执行过程流的重新编译的编程块,而不需要修改过程流。
在执行之前或期间,用户可以例如从本地或远程数据库中选择输入文件,以用作作为正在执行的过程流220的一部分的编程块222的输入226。可以在不退出过程流编辑器124的情况下选择输入文件。
用户可以在任何时候请求停止执行过程流。过程流编辑器124缓存在过程流停止之前已经执行的编程块输出的数据。对于执行的每个编程块,数据都是按编程块缓存的。当用户按下菜单区域202中的按钮或等同物来恢复执行时,可以通过启动执行已经停止的过程流中的编程块来恢复执行。替代地,可以从用户标记为起始点的不同编程块开始执行。无论新起始点下游的任何编程块是否被修改,都可以在选定的起始点恢复执行。执行使用编程块最近编译的版本。如果标记为起点输入的编程块连接到前面的编程块,并且前面的编程块的输出还没有被缓存(可能是由于该编程块还没有被正确执行),则会警告用户,因为从起点开始执行可能会错过需要处理的数据。
如图2C-2F所示,编程块的执行顺序会受到用户放置起始点和改变连接器224的影响。图2C-2F示出了对显示在工作区域204中的编程块222的示例操作。在图2C中,具有IDs250的三个编程块222被显示为串行连接到工作区域204中的过程流路径234A。编程块222A具有等于blk_1的ID 250和等于0的执行号230,编程块222B具有等于blk_2的ID 250和等于1的执行号230,编程块222C具有等于blk_3的ID 250和等于3的执行号230,其中执行号230是基于连接来分配的,反之亦然。编程块222A的输出被提供给编程块222B的输入。编程块222B的输出被提供给编程块222C的输入。
图2D示出了具有等于blk_4的ID 250的编程块222D的***,其中来自编程块222A的输出被提供给编程块222D的输入,来自编程块222D的输出被提供给编程块222B的输入。编程块222D可以通过从目录(诸如图2A所示的目录214)中进行选择、将选择拖放到工作区域204、以及添加连接器224以将编程块222D添加到系列234A来***。编程块222D的***导致执行号230的更新,使得编程块222A仍具有等于0的执行号230,编程块222D被分配等于1的执行号230,编程块222B被重新分配等于2的执行号230,并且编程块222C被重新分配等于3的执行号230。如果编程块234A的过程流路径作为过程流执行,则默认起始点将默认为执行号230等于0的编程块222,即编程块222A。
图2E示出了响应于用户动作而显示的菜单252,用户动作例如是用户输入设备右击编程块222B或悬停在编程块222B上。菜单252示出了可以为编程块222B选择的一些示例选项(没有限制),包括设定起始点、移除起始点、调整参数、查看和/或修改源代码以及移除该编程块。用户选择了菜单252中的第一选项,即设定起始点。该选择的结果在图2F中示出,其中编程块222B被指定为具有起始点254,并且现在被重新分配等于0的执行号230。编程块222C被重新分配等于1的执行号230。从块222A和222D中移除执行号230,因为它们在现在具有当前起始点254的编程块222B之前。
通过提供高速缓存已执行编程块的输出的功能以及在过程流的任何编程块设定起始点的功能,可以获得优势。当前正在开发的编程块之前可以有任何数量的编程块。当前开发的编程块可能需要来自先前编程块的输出作为输入。当执行和/或测试当前开发的编程块时,不需要每次作者修改和重新编译当前开发的编程块以提供所需输入时都执行前面的编程块。相反,作者可以在当前开发的编程块上设定一个起始点。过程流的执行将从起始点(当前开发的编程块)开始。执行引擎128检查先前编程块的缓存输出数据对象是否存在,并在执行时将其用作当前开发的编程块的输入。缓存输出数据和灵活设定起始点的这一特征允许在开发、测试和执行定制编程块所属的过程流的同时开发和测试定制编程块。执行和测试可以使用选定的输入数据,并提供可用于确定是否需要进一步开发和测试的即时结果,所有这些都无需离开过程流编辑器124。
在该实施例中,使用对输出对象的弱引用来实现编程块的输出数据对象的缓存。对输出对象的弱引用确保当前开发的编程块的编译后的汇编件(例如,存储在DLL中)可以在不离开过程流编辑器124的情况下从当前应用会话中安全地卸载(和重新编译),即使与编译后的汇编件相关的弱引用仍然存在。同时,弱引用确保输出对象在存在时仍可访问(意味着特定的已编译程序集尚未从当前应用程序会话中卸载)。
包括过程流编辑器124和/或代码编辑器122的D&E平台允许在过程流中开发编程块的作者使用命令来控制过程流。一个示例命令是中止命令。编程块的源代码的作者可以包括例如验证作为输入提供给编程块的文档的源代码。作者可以使用中止命令来根据基于编程块执行的条件中止整个过程流的执行,例如当输入数据集的验证不成功时。例如,这可以防止使用错误数据对后续编程块进行无用的执行。另一个示例是进度命令。编程块的作者可以使用进度命令将关于编程块的执行进度的百分比(例如,处理的数据的百分比)的信息传递给GUI。在编程块执行期间,GUI可以显示进度命令报告的状态,例如通过在GUI中提供的进度条中显示进度百分比。
当新的过程流或修改的编程块被创建或修改并存储在客户机102或应用服务器116的字典中时,它可以与作者的标识相关联地存储,包括作者联系信息。关于由作者创作的过程流或编程块的其他用户使用的使用数据可以使用相关联的作者联系信息自动提供给作者。使用数据可以包括关于用户遇到的带有时间戳的问题的数据。这可以包括跟踪额外的修改和执行情况。
可以使用ML框架对日志数据和/或应用数据进行统计分析,例如NumpyTM、TensorFlowTM、PyTorchTM和Accord.NetTM、SciSharp.NetTM和MS Cognitive ToolKit,不限于任何特定的ML框架。在一个或多个实施例中,机器学习技术用于报告关于记录的错误等的信息。对作者和用户都是如此。可以将作者编写的特定过程流或编程块中的代码的统计分析结果发送给作者,突出显示问题或故障发生的位置、活动用户的数量(例如每周、每天、每个地点等)遇到的问题,以及这些用户为解决问题所采取的步骤。这避免了用户向作者重演或演示问题的需要。每个编程块都可以有一个内部创建的标志,该标志显示继承以确定问题发生在代码中的什么位置。继承可以根据记录的开始和停止时间戳以及带有时间戳的记录错误来确定。
用户反馈可以与过程流或编程块的执行相关联地获得。该反馈可以通过提供供用户完成的调查来获得,其中用户通过调查的反馈与相应的过程流或编程块相关联地被记录。反馈可以被匿名化和聚合,并例如经由网页,诸如经由GUI提供的指定标签对作者可用。
当(例如,由诸如工程师的用户)提交开发编程块或整个过程流以找到简单或复杂数据转换任务的解决方案的请求时,可以经由开发者用户和/或非开发者用户社区的问题跟踪***110,例如经由网页,例如经由D&E平台提供的指定标签,使该请求对社区可用。社区中的用户可以通过对请求的有用性和/或对其解决方案的需求进行评级或发出批准信号来提供反馈。社区反馈可以帮助D&E平台的用户开发编程块或过程流,以决定回答哪个请求并估计完成日期。
由问题跟踪***110检测和/或跟踪的或者由用户社区输入的负面反馈可以自动提供给作者。通过这种方式,作者意识到潜在的问题,并且可以继续开发用于新用途的编程块和/或纠正编程块或过程流中的缺陷。
被跟踪的问题可以被存储为日志数据或应用数据,并且可以由问题跟踪***110来跟踪。问题跟踪***110可以查阅日志112,日志112与D&E平台或其他被跟踪问题的储存库集成在一起。这些问题可以与过程流的开发或执行期间的跟踪用户行为、用户输入的反馈、用户社区成员输入的社区反馈、***生成的错误或故障等相关联。
问题跟踪***110可以在客户机102上本地提供,或者可以经由web服务器104或应用服务器106提供。图1A、1B和1C所示的任何实施例可以包括问题跟踪***110。一些示例问题可能包括带有时间戳的错误或警告、执行失败和/或用户受挫的指示。用户受挫的指示可以从接收自用户操作的UID 103的中断信号中确定,例如指示UID 103正在以不稳定的方式、太慢、太快等使用的中断信号。这些问题可能包括花费在开发或执行任务上的时间太多或太少。在一个或多个实施例中,问题跟踪可以包括逻辑操作,例如将时间戳中断信号的接收速率与阈值进行比较。在一个或多个实施例中,当基于问题跟踪的结果怀疑用户受挫时,可以提示用户向用户提供帮助。AI/ML服务器集可进一步处理当前转换集(其中转换集包括输入数据集、过程流和目标数据集)并确定将减轻用户受挫的对输入数据集、过程流和目标数据集中至少一个的修改。
在一个或多个实施例中,问题跟踪可以使用机器学习技术来基于用户的先前行为学习用户的正常模式和与正常模式的偏差,或者在办公室、地区、国家等的情境中学习用户或用户组的正常模式和与正常模式的偏差。在一个或多个实施例中,AI/ML服务器组108的机器学习组件可以被训练来基于中断信号检测用户行为模式,并检测与该模式的偏差或一致性。培训可以针对一群领导者,可以包括针对个人、在同一办公室工作、居住在同一地理区域的个人等的学习模式。在一个或多个实施例中,可以向正在执行的软件程序的作者通知与所创作的软件程序的执行相关联的用户受挫。在一个或多个实施例中,检测到用户受挫的时间与正在执行的软件程序的特定部分的执行相关联。
来自用户社区的反馈可以被标准化并提供给与过程流和编程块相关联的作者。当向用户或作者推荐编程块或过程流或推荐对编程块或过程流的修订时,机器学习可以处理反馈(例如,关于用户行为的反馈和/或最终用户反馈(例如,对用户体验进行评级))。
现在参考图3-6B,示出了演示各种示例性实施例的实现的流程图。注意,图3-6B中所示的操作顺序不是必需的,因此原则上,各种操作可以不按所示顺序执行。此外,可以跳过某些操作,可以添加或替换不同的操作,可以并行而不是严格顺序地执行某些操作,或者可以在遵循本文描述的实施例的单独应用中执行选定的操作或操作组。
图3-5示出了由数据转换***(例如图1C所示的数据转换***100C)的D&E集成引擎160执行的示例方法。应当理解,D&E集成引擎160可以在其他数据转换***中作为桌面应用或基于网络的应用来提供,例如分别在图1A和1B的数据转换***100和100B中。
参考图3,示出了用于解决在不兼容的数据处理***之间传输数据的数据转换问题的示例方法。整个方法可以在不退出由D&E集成引擎提供的D&E平台的应用会话的情况下执行。诸如由块302-320执行的该方法的各方面与执行和协作任务相关联。诸如由块322-344执行的该方法的各方面与开发任务相关联。诸如由块346-350执行的该方法的各方面与协作任务相关联。块302、304、310、312、316、318、320、322、326、332、326、332、334、338、340和346示出了用户执行的动作,而块306、308、314、324、328、330、336、342、344、348和350示出了D&E集成引擎执行的动作
该方法开始于块302。在块304,使用关键词请求搜索转换问题的现有解决方案。该问题可以解决转换由第一数据处理***输出的数据以供第二数据处理***使用的需求,其中第一和第二数据处理***对于在它们之间传输数据不兼容。第一和第二数据处理***可以是不同的物理***,每个***具有一个或多个处理设备,或者可以共享相同的物理***,但是使用由一个或多个处理设备执行的不同应用。所寻求的解决方案是包括一个或多个编程块的过程流,这些编程块可以在数据被第一数据处理***输出之后、将其提供给第二数据处理***之前对数据进行操作。解决方案也可以是在过程流中执行特定任务的编程块之一。
该搜索访问可用过程流的字典,例如字典610A-610N中的一个或多个。该搜索可以在基于特定情境的特定词典中进行(搜索与任何用户相关的解决方案,特别是用户、特定办公室的用户、特定地区的用户、特定国家的用户、特定行业的解决方案、特定客户的解决方案等)。
在块306,显示已经被过滤以包括基于关键词搜索从字典中选择的候选过程流的目录。例如,该目录可以显示在由D&E集成引擎160显示的GUI的侧菜单210中。该词典包括由用户和/或AI和/或ML服务器组(例如图1所示的AI/ML服务器组108)输入的条目。使用D&E平台的用户社区可以访问该词典。该目录可以包括官方过程流和定制过程流,并且可以根据关键字等进行过滤。用户社区可以包括执行过程流和/或编程块的用户以及开发过程流和/或编程块的作者。
官方流是存储在字典中的过程流,已经过审查并符合批准标准,例如通过用户社区和/或AI/ML服务器集的批准。用户社区中的任何用户可以访问官方流以供使用。另一方面,定制流是过程流,它对用户社区不可用,但对执行搜索的用户可用。定制流的有限可用性可能是由于定制流是相对新开发的(可能是由用户开发的),并且还没有被批准对用户社区进行访问,或者由于定制流被标记为专有或机密的并且仅可由指定用户或用户组访问。
在块308,访问与被选择包括在目录中的相应过程流的条目相关联的元数据,并向用户显示。每个条目的元数据可以包括条目的过程流正在解决的问题的描述。
块310是决定块,如散列所示。在决定块310,用户决定与目录中包括的所选条目相关联的描述元数据是否提及与解决用户寻求解决的转换问题相关的信息。
如果在块310的决定为否,意味着没有显示的过程流解决该问题,则该方法在块322继续。
如果在块310的决定是肯定的,意味着特定的过程流确实解决了问题,则该方法在块312继续。在块312,用户选择要执行的过程流,例如通过将其从目录拖到GUI的工作区域,例如工作区域202,并选择命令执行过程流的标签。
在块314,使用用户指定的输入数据来执行过程流。用户可以使用执行过程流时激活的对话框指定输入数据,或者在执行开始前指定输入数据。输入数据可以手动上传或输入,或者可以提供包括用户数据的文件的地址,以供过程流在执行期间访问。
在决定块316,用户决定过程流是否解决了用户寻求解决的转换问题。用户可以在块312、314和316尝试一个以上的过程流,以确定该过程流在执行时是否解决了问题。
如果在块316的决定是“否”,这意味着过程流没有解决转换问题,则该方法在块322继续。
如果块316处的决定是“是”,意味着过程流确实解决了转换问题,则该方法在块318处继续。在块318,用户使用过程流及其编程块并对其进行评级。这些过程流和编程块可能是由其他作者开发的。评级作为反馈来提供,该反馈可用于通知作者是否出现了问题,并帮助其他用户和/或AI/ML服务器组108选择要使用的过程流或编程块。事实上,在块310,用户可以使用来自用户社区的其他用户的反馈来决定所显示的适合解决转换问题所需的标准的任何过程流。接下来,该方法在块320结束。
在决定块322处,用户可以决定是否定制所选择的过程流来解决转换问题。
如果在块322的决定是“否”,意味着用户不想定制过程流,则该方法在块346继续。
如果在块322的决定是“是”,意味着用户确实想要定制过程流,则该方法在块324继续。在块324,由D&E集成引擎提供开发环境,用于设计由字典中已经存在的可用编程块组成的定制过程流。
在块326处,用户搜索适于有助于解决转换问题的编程块,每个编程块执行用于解决一部分问题的部分任务。搜索可以使用搜索标准,如关键词。在块328,更新所显示的目录以显示基于搜索标准从字典中选择的候选编程块。该目录可以包括官方编程块和定制编程块,并且可以基于搜索标准进行过滤。
在块330,访问与被选择包括在目录中的相应编程块的条目相关联的元数据,并将其显示给用户。每个条目的元数据可以包括该条目的编程块正在解决的部分任务的描述。在决定块332,决定用户是否能够为解决转换问题所需的每个部分任务找到现有的编程块。
如果在块332的决定是否定的,意味着用户不能为每个部分任务找到现有的编程块,因为现有的编程块不能提供至少一个部分任务缺失的功能,则该方法在块338继续。
如果块332处的决定为是,意味着用户能够为每个部分任务找到现有的编程块,则该方法在块334处继续。
在块334处,用户通过利用从目录中选择的现有编程块来设计定制过程流,包括通过在路径中连续连接编程块来按照它们应该被执行的顺序来布置编程块。
在块336,定制过程流被存储在用户的数据库中,但是还没有被添加到将对用户社区可用的字典之一中。该方法在块314继续。最终,一旦定制过程流符合批准标准,它就可以作为官方过程流存储在字典中。
在决定块338处,做出用户是否能够编码编程块并想要开发具有所缺少的部分任务的功能的定制块的决定。
如果块338处的决定是“否”,意味着用户不能对编程块进行编码,则该方法在块346处继续。
如果块338处的决定是“是”,意味着用户能够对编程块进行编码,则该方法在块340处继续。在块340,用户设计定制编程块来执行缺失的部分任务。在块342,由D&E集成引擎提供用于开发定制编程块的开发环境,例如通过提供代码编辑器和编译器。
在块344,编译定制块的源代码,并且定制块在任何时候都可以根据需要在过程流中执行,包括立即执行。该方法在块314继续。最终定制编程块和/或包括定制编程块的定制流一旦满足批准标准就可以作为官方流存储在字典中。
在块346,用户从用户社区请求开发用于解决转换问题的过程流和/或用于执行缺失的部分任务的编程块。在块348,为用户请求、用户遇到的任何问题以及用户提交的任何评论和评级提供协作***,以记录并与用户社区共享。在块350,当另一用户共享对用户问题的解决方案时,例如过程流或编程块,用户被通知。
参考图4,示出了使用D&E平台定制编程块行为的示例方法。整个方法可以在不退出由D&E集成引擎提供的D&E平台的会话的情况下执行。块402、404、408、410、412、422、432和434示出了用户执行的动作,而块406、414、416、418、420、424、426、428和430示出了D&E集成引擎执行的动作。
该方法开始于块402。在块404,用户请求访问用户想要定制的编程块的源代码。在块406,加载所请求的源代码。源代码显示在D&E集成引擎的工作区域中,并且提供了代码编辑器,以便用户可以编辑源代码。在块408,用户修改源代码以定制编程块的行为。在块410,用户根据定制的需要添加对新依赖关系的引用。在块412,用户请求编译编程块,例如通过激活GUI提供的按钮。
在决定块414,确定编辑后的编程块当前是否在D&E平台的当前应用会话中执行。
如果块414处的决定是“否”,意味着所编辑的编程块当前未在当前应用会话中执行,则该方法在块416处继续。
如果块414处的决定是“是”,意味着编辑的编程块当前正在当前应用会话中执行,则该方法在块420处继续。在块420,通知用户编程块当前正在使用中,此时不能重新编译。在块422,用户等待编程块的当前执行结束或强制执行停止。块412、414、420和422可以循环执行,直到块414的决定是“否”。
在块416,确定是否有可能编译源代码。如果块416处的决定是“否”,则不可能编译源代码,然后该方法在块418处继续。
如果块416处的决定是“是”,则有可能编译源代码,然后该方法在块424处继续。
在块424,从应用会话中卸载编程块的DLL文件。在块426,新编译的汇编被存储到编程块的DLL文件中,并保存源代码。在块428,DLL文件被加载回应用会话并可用于执行。在块430,GUI显示与编程块相关联地存储的更新的元数据。元数据可以描述诸如描述、作者、版本等属性。在块432,用户启动包括重新编译的编程块的过程流的执行。在决定块434,用户指示编程块是否如预期那样表现和/或执行。
如果块434处的决定为否,意味着编程块没有如预期那样表现和/或执行,则该方法在块408处继续,向用户提供修改源代码的另一个机会。如果块434的决定是“是”,意味着编程块如预期那样表现和/或执行,则该方法结束。
在块418,向用户通知编译错误的细节,并且该方法在块408继续。
参考图5,示出了一种示例方法,其中通过执行相关联的过程流并利用在前编程块的缓存输出数据来测试开发的编程块。整个方法可以在不退出由D&E集成引擎提供的D&E平台的会话的情况下执行。块504、506、520、522、524、526、528和530示出了由用户执行的动作,该用户可以是例如开发者或工程师。块508、510、512、514、516、518、532、534、536和538示出了由D&E集成引擎在单个应用会话期间执行的动作。
该方法开始于块502。在块504,加载适于解决工程师的复杂项目问题的过程流。用户可以通过从目录中选择过程流并将其拖放到D&E平台GUI的工作区域来加载过程流。在块506,用户开始执行整个过程流。在该示例中,过程流包括三个编程块(“块1”、“块2”和“块3”)。
在块508,执行“块1”并保持内存中对块1的输出对象的弱引用。在块510,“块1”的输出对象作为输入被传递给“块2”。在块512,执行“块2”并保持内存中对块2的输出对象的弱引用。在块514,“块2”的输出对象作为输入被传递给“块3”。在块516,执行“块3”,并且在该示例中,输出“块3”的数据,并且过程流被存储在数据库表中。在块518,通知用户过程流已经成功执行。
在块520,用户检查由“块3”产生的数据库表。在决定块522,用户决定存储在数据库表中的输出数据是否如预期的那样。
如果块522处的决定是“是”,意味着输出数据如预期的那样,则该方法结束。如果块522处的决定是“否”,意味着存在问题并且输出数据不符合预期,则该方法在块524处继续。
在块524,用户执行分析并确定“块2”导致了问题,因此需要修改“块2”。在块564,用户使用过程流编辑器在“块2”设定起始点。在块528,用户定制(或重新定制)“块2”的源代码并重新编译“块2”。在块530,用户从“块2”的起始点开始执行过程流。在决定块532,确定“块1”的弱引用是否仍指向现有输出对象。
如果在块532的决定为否,意味着“块1”的弱引用不再指向现有的输出对象,则该方法在块534继续。
如果在块532的决定为是,意味着“块1”的弱引用仍然指向现有的输出对象,则该方法在块536继续。在块536,确定不需要耗时执行“块1”。在块538,通过来自存储器的弱引用来引用“块1”的输出对象。该方法在块510继续,通过将“块2”的输出对象传递给“块1”的输入来继续执行“块2”。
在块534,通知用户“块1”可能因为保持其弱引用而被卸载,因此“块1”的输出对象不能被使用。通知用户需要再次执行“块1”以便“块2”接收正确的输入数据。
总体参照图6A和6B,示出了由AI组108A和ML组108B执行的示例方法。AI组108A和ML组108B各自包括一个用于存储数据的储存库和至少一个用于管理数据存储和检索的处理器等。它们一起可以包括例如RDBMS(例如SQL服务器)和服务器(例如提供交换接口(例如web或windows服务或任务)以实现AI/ML服务器组108内的应用和数据存储***之间的数据交换并执行数据处理)。
AI组108A和ML组108B的服务器在一个或多个计算机上实现,如图8所示的计算***800所示。AI组108A和ML组108B中的每一个的处理器802具有与机器学习一起使用的重型处理能力,例如图形处理单元(GPU)830。此外,AI组108A包括至少一个神经网络820,其可以包括一个或多个具有输入、隐藏层和输出的卷积和/或反卷积神经网络。
AI组108A基于用户反馈和用户社区的用户提供的客户端数据集(输入数据集和目标数据集)应用无监督强化训练。AI组利用用户提供的客户端数据集创建无监督学习,并基于无监督学习创建训练有素的方法。ML组108B利用来自AI组108A的输入作为监督指导,并迭代适用于用户提供的输入数据集的任何或所有可用机器学习方法。用户社区的不同用户可以向AI/ML服务器组108提交客户端数据集。
用于AI组108A和ML组108B的DB管理***在一个或多个计算机上实现,例如由图8所示的计算***800和存储设备示出,存储设备可以被实现为存储804的一部分或如图8所示的外部设备808。AI设备108A的DB管理***可以存储和管理有效结果DB 614,ML设备108B的DB管理***可以存储和管理ML建议解决方案DB 660。
在一个或多个实施例中,AI组108A和ML组108B中的每一个都可以使用专用于AI组108A和ML组108B的相应服务器组的计算机和存储设备。在一个或多个实施例中,AI组108A和ML组108B可以共享计算机和存储设备或其部分。AI组108A和ML组108B可以各自使用任务或服务来从服务器组108的不同存储或处理组件访问数据并在它们之间交换数据。任务和服务的示例包括WindowsTM任务、web服务、Windows ServicesTM和服务器任务。
图6A所示的块由AI服务器组执行,例如图1所示的AI服务器组108A。图6B中所示的块由ML服务器组执行,例如图1中所示的ML组108B。在块602,AI服务器组的D&E接口与D&E平台对接以接收客户端数据集。在块602的第一次迭代期间,可以通过用户拖放所选文件或使用D&E平台的GUI导入文件来接收客户端数据集,并将其存储在客户端数据集DB 604中。在块602的后续迭代期间,在块602接收由来自训练数据DB 612的训练数据修改的客户端集,并将其存储在客户端数据集DB 604中。
图6A和6B的描述涉及具有过程流和应用于该过程流的分析的客户端数据集。替代地,客户端数据集可以包括编程块,并且分析可以应用于编程块。
客户端数据集是包括输入集和目标数据集的转换集,输入集包括从其接收输入数据的一个或多个文件,目标数据集包括输出数据被传递到的一个或多个文件。客户端数据集表示输入数据转换为输出数据的转换问题。包括在客户端数据集中的输出数据是期望的输出,其用于训练AI/ML服务器组108从字典610A-610N(统称为字典610)中选择过程流,并根据需要修改过程流。由于字典610是情境相关的,例如基于地区、国家、办公室或用户,因此可以基于情境选择过程流。目标是选择和修改(如果确定需要修改)可以接收输入数据、处理输入数据并输出所需输出数据的过程流。
客户端数据集还可以指定请求解决方案的情境,例如每个用户或特定的办公室、地区或国家。由AI组608A和ML组608B执行的分析可以限于指定的情境。可选地,例如如果没有请求情境,则可以为不同的情境找到分析。
在图6A和图6B的总体视图中,在第一次迭代中,接收初始转换集,并且在至少一次相应的后续迭代中,接收经训练的转换集。初始和经训练的转换集合中的每一个都包括组件,这些组件包括输入数据集、目标数据集和用于将输入数据集转换成目标数据集的过程流,其中经训练的转换集合使用使用AI工具生成的训练数据,该AI工具修改来自先前迭代的转换集合的至少一个组件。对于每次迭代,将已训练转换集的组件与先前迭代的已训练转换集的相应组件进行比较,并使用从过程流的执行或开发中存储的历史数据的相应组件与相交数据进行比较。如果基于比较找到合适的匹配,则选择经过训练的转换集来解决工业数据转换问题。
在一个或多个实施例中,对于每次迭代,ML工具被应用于经训练的转换集以提出对转换集建模的ML解,并寻求ML解的收敛。
在一个或多个实施例中,收敛的ML解被验证。如果没有找到合适的匹配,验证不成功,或者收敛失败,则应用AI工具为下一次迭代生成训练数据。
在一个或多个实施例中,对于每次迭代,当可用时,接收用户反馈。用户反馈指示对应于迭代的初始或训练转换集是否可被用户接受,并且用户反馈与初始或训练转换集相关联地存储并用于解决后续工业数据转换问题。
在一个或多个实施例中,历史数据包括一个或多个来自用户社区随时间执行过程流的输出数据、关于用户社区随时间开发或执行过程流的经历的日志数据、以及关于随时间开发或执行过程流时的中间结果的应用数据。
在块602的第一次迭代期间,客户端数据集可以包括初始猜测,该猜测包括用户通过D&E平台选择的过程流。如果没有为客户端数据集提供过程流,则AI/ML服务器组108可以为下一次迭代生成过程流的初始猜测,如下所述。初始猜测在后续迭代中被修改。
在当前迭代期间(其可以是初始迭代或特定的后续迭代,在块620处,从DB 604检索来自当前迭代的客户端数据集。检索到的客户端数据集被称为当前客户端数据集,并且包括当前输入数据、当前过程流和当前输出数据,其中任何一个都可以被训练数据修改。评估当前客户端数据集。该评估将当前输出数据与所需输出数据进行比较。如果评估误差低于阈值,则通过评估确定客户端数据集是可接受的。
在一个或多个实施例中,如果评估指示当前客户端数据集是可接受的,则在块620向用户显示当前客户端数据集的输出。用户可以提供输入来指示当前客户端数据集是否可被用户接受。如果用户确认当前客户端数据集是可接受的,则当前客户端数据集(例如输出)被认为是有效的并且可以被使用,例如在图3的过程流300中(不同于块302或320)。
在一个或多个实施例中,不向用户咨询反馈,并且该过程在没有用户反馈的情况下自主进行。评估结果的使用无需用户反馈。
无论块620对当前客户端数据集的评估是否成功或者用户是否确认当前客户端数据集是可接受的,都执行块622。在块622,当前客户端数据集作为验证条目被存储在有效结果DB 614中,并基于评估和用户确认的结果来指示其是否有效。
如果评估不成功或者用户没有确认当前客户端数据集是可接受的,则该方法在块621继续。在块621,通过访问存储在已训练数据DB 612、日志数据服务器612、输出数据服务器114和应用数据服务器116中的与当前客户端数据集相关的数据来找到与当前客户端数据集中的数据匹配或与匹配数据相关的交集数据(例如具有相同的执行会话ID、开发会话ID等)交集叉点数据存储在交集点数据DB 625中。
在块626,存储在交集数据DB 625上的数据与有效结果DB 614中的有效验证条目进行比较,以评估是否匹配。在块616,块626的评估结果(标记为N1和Y1)用于更新有效结果DB 614。如果在块626确定不存在匹配(在图6A中表示为N1),则该方法在块630继续。在块630,AI框架被应用于当前客户端数据集、集成数据和/或存储在有效结果DB 614中的相关有效结果。选择当前客户端数据集的一个或多个最佳AI生成解决方案。人工智能框架的示例包括MS Cognitive ToolkitTM、PyTorchTM和Tensor FlowTM,但不限于特定的人工智能框架。人工智能框架可以应用神经网络。AI生成的解决方案被存储在await ML转换DB 608中,并且该过程在ML服务器组108B的块650继续。仍在当前迭代中,AI服务器组108A的块628等待来自ML服务器组108B的块680的ML结果。
AI框架可以寻找要在AI解决方案中调整的基本变量,对于这些基本变量的调整在接近AI评估误差为零时具有最大效果,其中AI评估误差是期望输出和AI解决方案实现的输出之间的误差。人工智能解决方案是使用人工智能框架确定的转换集,具有输入数据集、目标数据集和将输入数据集转换为目标数据集的过程流(或编程块)。输出是目标数据集。
如果在块626确定存在匹配(在图6A中表示为Y1),则匹配的AI解决方案被存储在await ML收敛DB 608中,并且该过程在ML服务器组108B的块650继续以检查收敛。仍在当前迭代中,AI服务器组108A的块628等待来自ML服务器组108B的块680的ML结果。
一旦从块680提供了ML解,AI组108A就执行验证过程。验证可以包括重复在块626执行的比较。ML解是使用ML框架确定的转换集,它具有输入数据集、目标数据集和将输入数据集转换为目标数据集的过程流(或编程块)。输出是目标数据集。
在块616,块626处的重复评估的结果(标记为N2和Y2)用于更新有效结果DB 614。这次,如果在块626确定ML解匹配有效验证条目(在图6A中表示为Y2),则在块630,将有效结果DB 614中新存储的ML解的误差与通过应用AI框架测试的潜在AI解决方案的先前迭代的误差(例如,存储在await ML收敛DB 608中)进行比较,并选择最佳解决方案。比较的误差是使用测试的ML解或AI解决方案获得的输出与所需输出之间的差异。
如果验证失败,则在块606执行下一次AI迭代的控制。执行块602的下一次迭代,其中接收对客户端数据集的新猜测。控制块606可以选择客户端数据集用于新的猜测,例如通过建议测试的ML和AI解决方案的最佳解决方案(可能对基本变量进行调整)。该过程可以通过执行额外的迭代来继续,直到ML组108B的收敛和AI组108A的验证都被实现或者超时条件发生。
例如,由于在块626未能找到匹配(在图6A中表示为N2)或者确定与ML解和AI解决方案相关联的误差超过预定阈值,可能发生验证失败。
如果验证成功,则导致最低误差和/或优于其他解决方案的AI和/或ML解用于生成存储在训练数据DB 612中的新训练数据,并将一个或多个新条目添加到字典610中。可以基于提交的初始客户端数据集的情境来选择用于存储新条目的合适的情境词典610A-610N。
参考ML组108B执行的收敛过程,在块650,在块630应用AI框架之后,用最后添加到await ML收敛DB 608的结果更新ML建议解决方案DB 660。
在块670,等待ML收敛处理的数据从ML建议的解决方案DB 660获得,并使用ML框架(也称为工具)进行处理,以确定被测试的各种ML框架和解决方案的相关ML误差。ML框架可以包括不同的框架,例如ML/NETTM、Accord.NetTM、PyTorchTM,不限于特定的ML框架。每个框架及其模块可以使用多个ML解,例如通过使用ML解,其中调整变量(例如基本变量)以提供不同的模型。可以测试不同的框架、模块和模型,直到找到收敛。
在块680,确定是否发现收敛。通过确定最大似然误差来测试收敛性,最大似然误差是每个最大似然解的输出与期望输出之间的差异。当ML误差满足一个标准时,即接近零或低于预定阈值时,发现收敛。当发现收敛时,块680通知块,以便测试在块670停止。产生可接受误差的ML解被提供给块626,用于用ML解更新有效结果DB 614。块626确定ML解和有效结果DB 614中的有效结果之间是否匹配,并如前所述沿着分支N2和Y2前进。
用于评估收敛的ML技术的示例包括但不限于可以执行转换或转换组合的范数或数学模型的矩阵评估。转换的一些示例包括但不限于高斯转换、傅立叶/快速傅立叶转换、拉普拉斯转换、标准线性和非线性方程、标准代数方程、标准导数、偏导数和积分、基于混沌的数学和通过特征值的矩阵分析。
趋同可以通过多种形式实现。在第一种形式中,ML组108B首先通过试错法对输入和目标数据集建模(例如,利用传递函数),然后使用该模型来确定收敛是否可能,例如通过搜索稳定点。稳定点是所用模型输出中的值,对于所用的不同试验(例如,每个试验使用不同的传递函数),这些值变化不大(意味着ML误差低于预定阈值,表明变化在预定义的容差范围内)。传递函数可以是例如拉普拉斯传递函数、高斯函数或任何数学或统计方法。
在第二种形式中,当没有找到稳定点时,可以用随机值(文本(其中文本被表示为ASCII码)或数字)创建矩阵,并且在二维中计算矩阵范数。迭代矩阵之间的距离可以例如使用矩阵范数来确定。如果在当前迭代和前一次迭代期间产生的随机值之间的差异足够低,表明总误差减小,则发现收敛。如果当前迭代和前一次迭代的随机值之间的差异不够低,则在预定义的迭代次数后收敛失败。矩阵范数可以是例如Frobenius范数。
当确定AI或ML错误或确定AI或ML解是否匹配不同的解决方案(例如有效结果DB614中的条目)时,将期望的输出数据(由用户或由训练数据提供)与由AI或ML模型或框架基于公共输入数据集生成的输出进行比较。当比较字母时,根据预期单词或字母的匹配程度来确定匹配;当比较数字时,基于接近零值的差异来确定匹配;当比较图形集时,匹配是基于像素作为数字的评估来确定的。
如果在块680没有发现收敛,则块680向块650提供稍微不同的ML解(例如,通过改变一个或多个变量,例如基本变量)作为要测试的新ML解。因此,每次重复块650时执行内部循环,以使用新的ML解重新训练数据。块650可以确定呈现给块650的新ML解与块650的输入之间的差异,例如对于先前执行的循环,以确定匹配失败的地方。块650提供预期的匹配输出,块680生成不匹配输出,并且计算差异(意味着误差)。差异存储在ML建议解决方案DB660中。在块685执行矩阵分析,以确定应用于将用于下一循环的新ML解的变化。
矩阵分析可以使用公式来执行,例如示例公式(1):
公式(1)
如果ML组B 108B在后续迭代中没有检测到收敛,则AI组108A可以选择新的调整以应用于将用于下一次迭代的所选变量(例如,基本变量)。该过程可以自主地和无限期地继续,AI组108A探索不同变量和不同字典条目的调整。
在块602,AI组108A可以随机地或有***地从字典610中选择字典条目。可以调整所选的字典选择(例如修改输入数据集、输出数据集或过程流中的任何一个)并将其作为初始客户端数据集提供。当词典条目的处理完成时,可以选择和修改下一个词典条目,从而允许连续、自主地操作来探索可用词典条目的可能不同模型和调整参数的应用。
参考图7,使用概率树形图应用概率条件,用于在过程流的开发或执行期间选择要添加到过程流的下一个编程块。
概率条件包括确定数据集与特定条件匹配的真概率(沿着与真、假和未确定相关的选择范围),该特定条件与输入或输出到编程块或从编程块输出相关联。该概率可以使用机器学习技术来确定,该机器学习技术通过AI服务器组108将数据集应用于过程流的布置。在所示的示例中,基于来自AI服务器组108的结果选择要执行的下一个编程块704、706、708、710或712,该结果指示沿着数据集匹配特定条件的选择范围的真实概率。基于该匹配的结果,对概率进行排序,例如在假、未确定和真之间,以选择概率条件。
在图7提供的示例中,示出了五种可能的概率条件。
第一概率条件是“如果X为假”,其中X是所考虑的特定条件。编程块集合704被执行(在执行期间)或被选择包括(在开发期间)。编程块集合可以包括编程块、编程块的路径、过程流或另一个概率树形图。例如,当目标数据集的任何结构都不匹配输入数据集结构的任何部分时,就会出现这种情况。在这种情况下,条件语句中评估的元素不兼容(例如,试图将包含字符但不包含数字的字符串与数字进行比较)。
第二概率条件是“如果X很可能为真”。当条件部分或不完全满足时,执行(在执行期间)或选择包括(在开发期间)编程块集合710。(例如,条件中的某些元素可能不符合条件)。例如,当目标数据集的结构有一部分与输入数据集的结构相匹配,但缺少与输入数据集的剩余部分相匹配的结构时,就会出现这种情况。
第三概率条件是未定义的条件,例如无法进行评估。当未评估是否满足条件时,执行(在执行期间)或选择包括(在开发期间)编程块集合708。例如,当其中一个数据集为空时,就会出现这种情况。
第四概率条件是“如果X很可能为假”。当满足第四概率时,执行(在执行期间)或选择包括(在开发期间)编程块集合706。在这种情况下,条件大多为假,条件中正在评估的一些元素可能与若干字段匹配,尽管没有一个元素与正在比较的元素完全匹配。例如,当目标数据集的一部分结构与输入数据集的全部结构匹配,但目标数据集的剩余部分与输入数据集的结构不匹配时,就会出现这种情况。
第五概率条件是“如果X为真”。编程块集合712被执行(在执行期间)或被选择包括(在开发期间)。在这种情况下,元素显然是兼容的,并且条件完全得到满足。例如,当目标数据集的所有结构都与输入数据集的所有结构匹配时,就会出现这种情况。在一个或多个实施例中,可以管理过程流开发期间的代码生成。可以针对转换问题提出建议,例如在特定数据库中用于输入、中间或目标数据集和/或编码解决方案的数据字段。在一个示例转换问题中,需要一个解决方案来将使用Excel存储的输入数据集转换为XML结构。对不同字段和列之间的相似程度进行分析。可以基于对记录信息(包括失败、成功修改等)的机器学习分析,通过猜测从字典610之一中选择哪个条目来推荐编程块和/或过程流。)用于以前实施的解决方案。机器学习技术可以尝试关联不同的数据,例如通过使用由其他用户执行的成功解决方案提供的或从不同的机器学习库中生成的数学模型来应用多元分析。可以使用AI组108A和ML组108B来应用AI,直到实现收敛和验证,在此基础上向用户推荐解决方案。
例如,可以检测创作修改的一个或多个用户随时间对过程流或编程块的参数的改变。用户尝试的这些参数的不同值(例如对值的轻微修改)可以作为来自训练DB 312的训练数据提供给ML组108B,训练DB 312具有调整后的参数。ML组108B可以使用机器语言技术接收和分析训练数据的多次迭代,并通过识别证明最佳收敛的参数值来确定参数的最佳值。这将表明最佳值将特别适合于完成创作修改的用户的任务。
在一个示例中,可以使用所公开的用于数据转换解决方案的机器语言技术来建议的过程流或编程块的增强可以包括图形数据集的升级和图形表示技术的识别。使用建议因子的放大来增强图形数据集,使得它可以由光学图形字符识别(OGCR)应用程序进行分析,以将图形数据转换为文本或图形(使用工具,例如但不限于Wu传递矩)。通过这种方式,输入数据集中的图形表示可以转换为中间数据集,例如(适当的)矢量图形数据集。基于矢量图形数据集,字符或形状可以被正确识别并准确地为目标数据集重新创建。
例如,在客户端数据集中,输入数据集可以包括图形数据集,并且客户端数据集的过程流可以被配置为对图形数据集执行OGCR。AI工具和ML工具中至少有一个提出了用于提升图形数据集的提升因子。修改过程流,使得在过程流的执行期间,在执行OGCR之前,生成基于放大因子放大的中间数据集,然后对中间数据集执行OGCR。
因此,当由AI服务器组108支持时,集成开发和执行环境实现并增强了用户之间的协作。用户可以位于不同的地理位置和/或在不同的时间工作。一个用户为生成解决方案而进行的问题解决可以为另一个用户所用。用户可以通过搜索和浏览由字典610填充的全局或本地目录来定位候选解决方案。可以利用机器学习技术来识别用户正在使用的参数,使用这些参数的不同值来尝试不同的解决方案,并通过检测收敛来识别最佳解决方案和所使用的参数值。
参考图8,示出了示例计算***800的框图,其提供了数据转换***100的处理组件的示例配置,即客户机102、网络服务器104、应用服务器106、AI服务器组108的AI服务器、日志服务器112、输出数据服务器114和应用数据服务器116。此外,数据转换***100的所有或部分处理组件可以被配置为软件,并且计算***800可以代表这些部分。计算***800仅是合适***的一个示例,并不旨在对此处描述的本公开的实施例的使用范围或功能提出任何限制。计算***800可以使用硬件、软件和/或固件来实现。无论如何,计算***800能够实现和/或执行本公开中阐述的功能。
计算***800以通用计算设备的形式示出。计算***800包括处理设备802、存储器804、输入/输出(I/O)接口(I/F)806,其可以与诸如用户接口810的内部组件以及可选的外部组件808通信。
处理设备802可以包括例如可编程逻辑设备(PLD)、微处理器、DSP、微控制器、FPGA、ASIC和/或具有类似处理能力的其他分立或集成逻辑电路。
处理设备802和存储器804可以包括在例如FPGA、ASIC、微控制器或微处理器中提供的组件中。存储器804可以包括例如用于临时或长期存储数据以及用于存储可由处理设备802执行的可编程指令的易失性和非易失性存储器。存储器804可以是用于存储程序指令的可移动(例如便携式)存储器。I/O I/F 806可以包括接口和/或导体以耦合到一个或多个内部组件810和/或外部组件808。
处理设备802可以可选地包括一个或多个神经网络820和/或GPU 830。神经网络820和GPU 830以虚线示出,以指示它们特定于某些实施例。在包括AI组108A和108B的实施例中,AI组108A包括一个或多个神经网络820和GPU 830,ML组108B包括GPU 830。
这些计算机程序指令也可以存储在计算机可读介质中,其可以指导计算机、其他可编程数据处理装置或其他设备以特定方式运行,使得存储在计算机可读介质中的指令产生包括实现流程图和/或框图的一个或多个框中指定的功能/动作的指令的制品。
计算机程序指令还可以被加载到计算机、其他可编程数据处理装置或其他设备上,以使一系列操作在计算机、其他可编程装置或其他设备上执行,从而产生计算机实现的过程,使得在计算机或其他可编程装置上执行的指令提供用于实现框图的一个或多个框中指定的功能/动作的过程。
数据转换***100的处理组件的实施例可以由一个或多个计算机***实现或执行,例如微处理器。每个计算机***800可以被包括在数据转换***100的处理组件或其多个实例中。在所示的示例中,计算机***800嵌入在数据转换***100的处理组件中。在各种实施例中,计算机***800可以包括微处理器、FPGA、专用集成电路(ASIC)、微控制器中的一个或多个。计算机***800可以作为嵌入式设备来提供。计算机***800的部分可以在外部提供,例如通过中央计算机、数据集中器、驾驶舱计算设备控制间隙状态的显示,例如关于间隙的通知或警报等。
计算机***800仅是合适***的一个示例,并不旨在对本文描述的本公开的实施例的使用范围或功能提出任何限制。无论如何,计算机***800能够实现和/或执行上文阐述的任何功能。
计算机***800可以在计算机***的一般情境中描述,例如由计算机***执行的程序模块等可执行指令。通常,程序模块可以包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。
在上文中,参考了各种实施例。然而,本公开的范围不限于具体描述的实施例。相反,所描述的特征和元件的任何组合,无论是否与不同的实施例相关,都被设想来实现和实践所设想的实施例。此外,尽管实施例可以实现优于其他可能的解决方案或现有技术的优势,但是给定实施例是否实现特定优势并不限制本公开的范围。因此,前面的方面、特征、实施例和优点仅仅是说明性的,并且不被认为是所附权利要求的要素或限制,除非在权利要求中明确记载。
可以利用一个或多个计算机可读介质的任何组合。计算机可读介质可以是非暂时性计算机可读介质。非暂时性计算机可读介质可以是例如但不限于电子、磁、光、电磁、红外或半导体***、装置或设备,或者前述的任何合适的组合。非暂时性计算机可读介质的更具体的示例(非穷尽列表)可以包括以下:具有一条或多条导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光纤、便携式光盘只读存储器(CD-ROM)、光存储设备、磁存储设备或上述设备的任何合适的组合。包含在计算机可读介质上的程序代码可以使用任何适当的介质来传输,包括但不限于无线、有线、光缆、RF等或前述的任何合适的组合。
用于执行本公开各方面操作的计算机程序代码可以用一种或多种编程语言的任意组合来编写。此外,这种计算机程序代码可以使用单个计算机***或通过相互通信的多个计算机***(例如,使用局域网(LAN)、广域网(WAN)、互联网等)来执行)虽然参考流程图和/或框图描述了前面的各种特征,但是本领域普通技术人员将理解,流程图和/或框图的每个块以及流程图和/或框图中的块的组合可以由计算机逻辑(例如,计算机程序指令、硬件逻辑、两者的组合等)来实现)通常,计算机程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理设备的处理器。此外,使用处理器执行这种计算机程序指令产生了能够执行流程图和/或框图的一个或多个框中指定的功能或动作的机器。
附图中的流程图和框图图示了本公开的各种实施例的可能实现的架构、功能和/或操作。就这一点而言,流程图或框图中的每个块可以表示模块、代码段或代码部分,其包括用于实现指定逻辑功能的一个或多个可执行指令。还应当注意,在一些替代实现中,方框中标注的功能可以不按照图中标注的顺序发生。例如,连续显示的两个块实际上可以基本上同时执行,或者这些块有时可以以相反的顺序执行,这取决于所涉及的功能。还将注意到,框图和/或流程图图示的每个块以及框图和/或流程图图示中的块的组合可以由执行指定功能或动作的基于专用硬件的***或者专用硬件和计算机指令的组合来实现。
应当理解,上述描述旨在说明而非限制。在阅读和理解以上描述后,许多其他实现示例是显而易见的。尽管本公开描述了具体的示例,但是应当认识到,本公开的***和方法不限于本文描述的示例,而是可以在所附权利要求的范围内进行修改来实施。因此,说明书和附图应被视为说明性的而非限制性的。因此,本公开的范围应当参照所附权利要求以及这些权利要求的等同物的全部范围来确定。
本公开的范围不限于本公开中描述的具体实施例。相反,所描述的特征和元件的任何组合,无论是否与不同的实施例相关,都被设想来实现和实践所设想的实施例。此外,尽管实施例可以实现优于其他可能的解决方案或现有技术的优势,但是给定实施例是否实现特定优势并不限制本公开的范围。因此,所公开的方面、特征、实施例和优点仅仅是说明性的,并且不被认为是所附权利要求的要素或限制,除非在权利要求中明确记载。
这里公开的各种实施例可以实现为***、方法或计算机程序产品。因此,各方面可以采取完全硬件实施例、完全软件实施例(包括固件、常驻软件、微代码等)的形式。)或结合软件和硬件方面的实施例,这些方面在本文中通常被称为“电路”、“模块”或“***”此外,各方面可以采取包含在一个或多个计算机可读介质中的计算机程序产品的形式,计算机可读介质上包含有计算机可读程序代码。
Claims (24)
1.一种由使用人工智能(AI)的计算机***实现的用于解决工业数据转换问题的方法,该方法包括:
在第一次迭代中接收初始转换集,并在至少一次相应的后续迭代中接收经训练的转换集,所述初始转换集和经训练的转换集中的每一个都具有包括输入数据集、目标数据集和用于将输入数据集转换成目标数据集的过程流的组件,其中所述经训练的转换集使用了使用AI工具生成的训练数据,所述AI工具修改来自前一次迭代的转换集的至少一个组件;
对于每次迭代,将经训练的转换集的组件与先前迭代的经训练的转换集的相应组件进行比较,并使用从过程流随时间的执行或开发中存储的历史数据的相应组件来交集数据;和
如果基于所述比较找到合适的匹配,则选择用于解决所述工业数据转换问题的经训练的转换集。
2.根据权利要求1所述的方法,对于每次迭代,进一步包括:
将ML工具应用于经训练的转换集以提出对转换集建模的ML解;以及
寻求ML解的收敛。
3.根据权利要求2所述的方法,进一步包括:
验证融合的ML解;
如果没有找到合适的匹配、验证不成功或收敛失败,则应用AI工具为下一次迭代生成训练数据。
4.根据权利要求2或3所述的方法,还包括:对于每次迭代,在用户反馈可用时接收用户反馈,其中所述用户反馈指示对应于所述迭代的初始或经训练的转换集是否可被用户接受,并且所述用户反馈与所述初始或经训练的转换集相关联地存储,并用于解决后续工业数据转换问题。
5.根据前述权利要求中任一项所述的方法,其中所述历史数据包括一个或多个输出数据,所述输出数据来自用户社区随时间执行过程流的输出数据、关于用户社区随时间开发或执行过程流的经验的日志数据、以及关于随时间开发或执行过程流时的中间结果的应用数据。
6.根据权利要求3所述的方法,其中所述AI工具识别对收敛和/或验证影响最大的转换集的基本变量。
7.根据权利要求6所述的方法,其中基本变量的识别使用拉丁方算法。
8.根据前述权利要求中任一项所述的方法,其中所述AI工具使用神经网络来识别和修改所述转换集。
9.根据前述权利要求中任一项所述的方法,其中所述AI工具包括MS CognitiveToolkit、PyTorch和TensorFlow中的一个或多个,所述ML工具包括ML.Net、PyTorch和Accord.Net中的一个或多个。
10.根据前述权利要求中任一项所述的方法,其中所述收敛使用矩阵分析、高斯转换、傅立叶或快速傅立叶转换、拉普拉斯转换和矩阵分析中的至少一种。
11.根据前述权利要求中任一项所述的方法,其中转换集的过程流至少包括第一编程块和第二编程块,所述第一编程块和第二编程块各自具有输入块和输出块,其中当第一编程块的输出块兼容用于将数据传递到第二编程块的输入块时,第一编程块和第二编程块兼容用于在执行期间连续执行第一编程块和第二编程块的执行指定,方法还包括基于在第一编程块的输出块和第二编程块的输入块之间执行期间传递数据的兼容性概率,从候选编程块中选择第一编程块和第二编程块之一推荐给用户。
12.根据权利要求11所述的方法,还包括应用机器学习来确定兼容性概率。
13.根据权利要求11所述的方法,还包括基于对第一编程块和第二编程块中的另一个的开发或执行期间的用户行为和/或用户动作和/或在第一编程块和第二编程块中的另一个的执行期间遇到的执行问题的确定来确定推荐第一编程块和第二编程块中的一个的机会。
14.根据前述权利要求中任一项所述的方法,其中与编程块或过程流相关联的日志数据包括与每个用户的编程块或过程流的开发或执行相关联的关于用户动作数据、用户行为数据、警告数据、错误和/或成功数据、用户反馈数据、任何相关对话的内容的时间戳信息中的至少一个,并且所述应用数据包括输入数据和在编程块的开发或执行期间生成的中间和/或临时信息数据中的至少一个。
15.根据权利要求14所述的方法,其中所述用户行为数据基于开发或执行过程流或编程块时用户与GUI的交互。
16.根据权利要求15所述的方法,其中所述方法还包括从用户输入设备(UID)接收中断信号,其中根据所述中断信号确定用户与GUI的交互。
17.根据权利要求15所述的方法,其中,使用机器学习来基于用户与GUI的交互和日志数据和/或应用数据之间的相关性确定用户情绪,从而进一步确定用户行为。
18.根据前述权利要求中任一项所述的方法,还包括向开发了编程块或过程流的作者用户通知日志数据和/或应用数据,所述日志数据和/或应用数据指示其他用户在执行编程块或过程流期间遇到的问题。
19.根据权利要求3所述的方法,进一步包括,其中所述经训练的转换集的输入数据集包括图形数据集,并且所述经训练的转换集的过程流配置为对所述图形数据集执行光学图形字符识别(OGCR),并且所述方法进一步包括:
由AI工具和ML工具中的至少一个建议用于放大图形数据集的放大因子;以及
配置所述经训练的转换集的过程流以生成基于所述放大因子放大的中间数据集,并对所述中间数据集执行OGCR。
20.根据权利要求19所述的方法,其中所述中间数据集是矢量图形数据集或合适的矢量图形数据集。
21.根据前述权利要求中任一项所述的方法,其中所述方法是自主进行的。
22.根据权利要求21所述的方法,进一步包括:
自主地提供下一个初始转换集;以及
对下一个初始转换集自动重复所述方法。
23.一种转化***,所述转化***包括:
存储器,配置为存储多个可编程指令;和
至少一个处理设备,与所述存储器通信,其中在执行所述多个可编程指令时,所述至少一个处理设备配置为:
在第一次迭代中接收初始转换集,并在至少一次相应的后续迭代中接收经训练的转换集,所述初始转换集和经训练的转换集中的每一个都具有包括输入数据集、目标数据集和用于将输入数据集转换成目标数据集的过程流的组件,其中所述经训练的转换集使用了使用AI工具生成的训练数据,所述AI工具修改来自前一次迭代的转换集的至少一个组件;
对于每次迭代,将经训练的转换集的组件与先前迭代的经训练的转换集的相应组件进行比较,并使用从过程流随时间的执行或开发中存储的历史数据的相应组件来交集数据;和
如果基于所述比较找到合适的匹配,则选择用于解决所述工业数据转换问题的经训练的转换集。
24.一种由使用人工智能(AI)的计算机***实现的用于解决工业数据转换问题的方法,所述方法包括:
a.在第一次迭代中接收初始转换集,该初始转换集包括输入集、目标数据集和用于将输入数据集转换成目标数据集的过程流,该过程流是在第一次迭代中从至少一个字典中获得的;
b.在至少一个相应的后续迭代中接收使用训练数据的经训练的转换集,该训练数据修改来自先前迭代的转换集的输入数据集、目标数据集和过程流中的至少一个;以及
c.对于至少一个相应后续迭代的每次迭代:
c1.当可用时接收用户反馈,该用户反馈指示对应于迭代的初始或经训练的转换集是否被用户接受;
c2.如果接收到用户反馈,则使用该用户反馈更新有效结果数据库,该用户反馈与相应的初始或经训练转换集相关联;
c3.如果用户反馈指示过程流是不可接受的,或者响应于没有接收到用户反馈,寻找有效结果数据库中的结果与来自随时间生成的先前训练数据的交集数据之间的匹配,来自用户社区随时间执行过程流的输出数据,关于用户社区随时间开发或执行过程流的经历的日志数据,以及当随时间开发或执行过程流时关于中间结果的应用数据;
c4.如果找到匹配,则使用机器学习(ML)工具提出ML解,直到能够为ML解转换集找到收敛;
c5.如果发现ML解转换集收敛,则基于其是否与有效结果数据库中的数据匹配来验证ML解转换集;
c6.如果验证成功,则更新验证结果数据库以指示成功的收敛和验证,更新训练数据和至少一个字典以包括ML解转换集,该ML解转换集可用于当前使用和未来使用以找到过程流作为数据转换问题的解;以及
c7.如果在步骤c3中没有发现匹配,则在步骤c5中验证不成功,或者收敛失败。
c7a.使用AI工具生成训练数据以修改下一个训练的转换集的过程流、输入数据集和目标数据集中的至少一个;和
c7b.提供下一个经训练的转换集作为在操作b接收的经训练的转换集。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163220710P | 2021-07-12 | 2021-07-12 | |
US63/220,710 | 2021-07-12 | ||
PCT/US2022/036831 WO2023287795A1 (en) | 2021-07-12 | 2022-07-12 | Artificial intelligence approach to solving industrial data transformation problems |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117897710A true CN117897710A (zh) | 2024-04-16 |
Family
ID=84890417
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280058371.8A Pending CN117897710A (zh) | 2021-07-12 | 2022-07-12 | 解决工业数据转换问题的人工智能方法 |
CN202280058359.7A Pending CN117940890A (zh) | 2021-07-12 | 2022-07-12 | 协作式工业集成开发和执行环境 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280058359.7A Pending CN117940890A (zh) | 2021-07-12 | 2022-07-12 | 协作式工业集成开发和执行环境 |
Country Status (4)
Country | Link |
---|---|
US (4) | US11842170B2 (zh) |
EP (3) | EP4352608A1 (zh) |
CN (2) | CN117897710A (zh) |
WO (3) | WO2023287806A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230120416A1 (en) * | 2021-10-15 | 2023-04-20 | Aras Corporation | System and method for a test automation framework associated with a self-describing data system |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9015301B2 (en) * | 2007-01-05 | 2015-04-21 | Digital Doors, Inc. | Information infrastructure management tools with extractor, secure storage, content analysis and classification and method therefor |
US8700378B1 (en) * | 2007-12-12 | 2014-04-15 | The Mathworks, Inc. | Symbolic expression propagation to support generating reconfiguration code |
US20100082133A1 (en) * | 2008-09-30 | 2010-04-01 | Ics Triplex Isagraf Inc. | Application builder for industrial automation |
US9483259B1 (en) | 2012-05-07 | 2016-11-01 | Google Inc. | System and method for providing real-time execution of source code in a collaborative online software development environment |
US10452992B2 (en) * | 2014-06-30 | 2019-10-22 | Amazon Technologies, Inc. | Interactive interfaces for machine learning model evaluations |
CA2955008A1 (en) * | 2014-07-17 | 2016-01-21 | 3M Innovative Properties Company | Systems and methods for maximizing expected utility of signal injection test patterns in utility grids |
US10496420B2 (en) * | 2014-12-02 | 2019-12-03 | Cerner Innovation, Inc. | Contextual help within an application |
US9946625B2 (en) * | 2015-03-18 | 2018-04-17 | New Iron Group, Inc. | Diagnostic tool and method for efficient software development |
EP3278213A4 (en) * | 2015-06-05 | 2019-01-30 | C3 IoT, Inc. | SYSTEMS, METHODS AND DEVICES FOR AN APPLICATION DEVELOPMENT PLATFORM OF AN INTERNET OF THE THINGS OF A COMPANY |
US10182122B2 (en) * | 2015-08-31 | 2019-01-15 | Open Text Corporation | Action flow fragment management |
US20210192412A1 (en) * | 2017-11-27 | 2021-06-24 | Sankar Krishnaswamy | Cognitive Intelligent Autonomous Transformation System for actionable Business intelligence (CIATSFABI) |
US11119463B2 (en) * | 2018-09-27 | 2021-09-14 | Rockwell Automation Technologies, Inc. | Automation objects for integrated design environments |
US11562136B2 (en) * | 2019-06-11 | 2023-01-24 | International Business Machines Corporation | Detecting programming language deficiencies cognitively |
US11048483B2 (en) * | 2019-09-24 | 2021-06-29 | Rockwell Automation Technologies, Inc. | Industrial programming development with an extensible integrated development environment (IDE) platform |
JP7409832B2 (ja) * | 2019-11-19 | 2024-01-09 | 株式会社キーエンス | プログラム作成支援装置 |
CA3176677A1 (en) * | 2020-05-07 | 2021-11-11 | Exploratory Sciences, Inc. | Data science workflow execution platform with automatically managed code and graph-based data job management |
-
2022
- 2022-07-12 US US17/863,255 patent/US11842170B2/en active Active
- 2022-07-12 EP EP22842757.1A patent/EP4352608A1/en active Pending
- 2022-07-12 WO PCT/US2022/036846 patent/WO2023287806A1/en active Application Filing
- 2022-07-12 EP EP22842761.3A patent/EP4352669A1/en active Pending
- 2022-07-12 US US17/863,343 patent/US20230016615A1/en active Pending
- 2022-07-12 US US17/863,271 patent/US20230016863A1/en active Pending
- 2022-07-12 CN CN202280058371.8A patent/CN117897710A/zh active Pending
- 2022-07-12 CN CN202280058359.7A patent/CN117940890A/zh active Pending
- 2022-07-12 WO PCT/US2022/036820 patent/WO2023287786A1/en active Application Filing
- 2022-07-12 EP EP22842769.6A patent/EP4352609A1/en active Pending
- 2022-07-12 WO PCT/US2022/036831 patent/WO2023287795A1/en active Application Filing
-
2023
- 2023-10-27 US US18/384,700 patent/US20240061653A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4352609A1 (en) | 2024-04-17 |
WO2023287806A1 (en) | 2023-01-19 |
US11842170B2 (en) | 2023-12-12 |
WO2023287795A1 (en) | 2023-01-19 |
CN117940890A (zh) | 2024-04-26 |
US20230019006A1 (en) | 2023-01-19 |
US20230016615A1 (en) | 2023-01-19 |
US20240061653A1 (en) | 2024-02-22 |
EP4352669A1 (en) | 2024-04-17 |
EP4352608A1 (en) | 2024-04-17 |
WO2023287786A1 (en) | 2023-01-19 |
US20230016863A1 (en) | 2023-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11907107B2 (en) | Auto test generator | |
US7984115B2 (en) | Extensible application platform | |
Powell | Microsoft Power BI cookbook: Creating business intelligence solutions of analytical data models, reports, and dashboards | |
AU2013338563A1 (en) | System and method for applying a business rule management system to a customer relationship management system | |
US11902391B2 (en) | Action flow fragment management | |
Mueller et al. | Python for data science for dummies | |
AU2017265144B2 (en) | Information retrieval | |
Mahey | Robotic Process Automation with Automation Anywhere: Techniques to fuel business productivity and intelligent automation using RPA | |
US20240061653A1 (en) | Collaborative industrial integrated development and execution environment | |
CN117389541A (zh) | 基于对话检索生成模板的配置***及设备 | |
Rokis et al. | Exploring Low-Code Development: A Comprehensive Literature Review | |
US20230004477A1 (en) | Providing a pseudo language for manipulating complex variables of an orchestration flow | |
Sahar | iOS 14 Programming for Beginners: Get started with building iOS apps with Swift 5.3 and Xcode 12 | |
Visochek | Practical Data Wrangling: Expert techniques for transforming your raw data into a valuable source for analytics | |
Toms et al. | ArcPy and ArcGIS | |
Jurčo | Data Lineage Analysis for Qlik Sense | |
Edan et al. | Usage one of Reverse Engineering Application (Node. js Web) to Construct Software Engineering Documents | |
Yu-Wei | R for data science cookbook | |
Malewar | Learning Informatica PowerCenter 10. x | |
Smyth | iOS 12 App Development Essentials: Learn to Develop iOS 12 Apps with Xcode 10 and Swift 4 | |
Finnegan | Predictive analysis and deployment for credit card fraud detection using machine learning techniques | |
Barnett et al. | EmoViz-Facial Expression Analysis & Emotion Data Visualization | |
Abedin | Modern R Programming Cookbook: Recipes to simplify your statistical applications | |
Leung et al. | Pro Visual Studio LightSwitch 2011 Development | |
Sinay | Microsoft Dynamics CRM 2011 Reporting |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination |