解释捆绑类型,如当前捆绑新捆绑。我们何时使用以及它将如何对我的交易产生影响。请举例说明。
2 回答
注意:不要在生产环境下运行 Gosu Script
“当前”包是包含可用于当前代码上下文的对象的包。这包括但不限于用户界面和插件。这些捆绑包由 Guidewire 应用程序自动创建,以创建、修改或编辑数据。集成开发人员可以引用当前包中的实体。他们也可以提交当前的捆绑包,尽管在某些情况下这是不可取的。
var bundleVar = gw.transaction.Transaction.getCurrent()
bundle.Commit()
只读包是包含从数据库检索的实体的包。这包括作为查询结果返回的实体,以及当相关实体位于只读包中时相关实体的外键引用的实体。只读包中的实体无法修改。但是,您可以将实体从只读包复制到可写包中。
示例:查询
新捆绑包是由集成代码显式创建的捆绑包。与只读包不同,您可以在新包中修改和提交数据。与当前捆绑包不同,您可以提交新捆绑包,而不必担心捆绑包中发生以后的交互。
•创建一个新包(未指定用户):
gw.transaction.Transaction.runWithNewBundle(\ newBundle -> {
CodeBlock } )
示例:更新 Vin 编号
//Getting the peopicy period by Job number
var period=Job.finder.findJobByJobNumber("12345").LatestPeriod
gw.transaction.Transaction.runWithNewBundle(\ newBundle -> {
//Adding present object to the bundle
newBundle.add(period)
period.PersonalAutoLine.Vehicles.each(\ veh -> {
print("before script ="+veh.Vin)
veh.Vin="12345678"
print("After script ="+veh.Vin)
}
} )
• • 创建一个新的捆绑包(作为指定的用户):
gw.transaction.Transaction.runWithNewBundle(\ newBundle -> {
CodeBlock } , user )
示例:按用户-超级用户更新 Vin 编号
gw.transaction.Transaction.runWithNewBundle(\ newBundle -> {
//Adding present object to the bundle
period.PersonalAutoLine.Vehicles.each(\ veh -> {
veh.Vin="12345678"
}
} , "su")
• runWithNewBundle() 方法固有地在方法末尾提交包
Bundles主要有3种类型。
当前捆绑包(示例:如果在 Guidewire UI 中发起交易,则 Guidewire 将自动创建当前捆绑包)
只读包(例如:如果您从数据库中选择任何结果,那么使用 Gosu 查询获取的结果将在只读包中可用。要使其可写包,然后将结果添加到新包)
新捆绑包(示例:此捆绑包用于提交数据或实体,当您使用批处理时,Webservice Guidewire 不会创建任何捆绑包,开发人员必须创建一个新捆绑包(使用新捆绑包运行)来提交数据到数据库)