206 param_compute fixes svc_operation_cfs_param_id

This commit is contained in:
2026-02-05 12:57:57 +03:00
parent b44255dfbd
commit 5d0b718020
4 changed files with 38 additions and 10 deletions
+1 -1
View File
@@ -57,7 +57,7 @@
//variables.framework.docs={};
variables.framework.docs.APIName="svc-api";
variables.framework.docs.APIVersion="0.205"; /*$ git config --global --unset user.password*/
variables.framework.docs.APIVersion="0.206"; /*$ git config --global --unset user.password*/
variables.framework.globalHeaders = structNew();
variables.framework.globalHeaders["Access-Control-Expose-Headers"] = "Location";
+32 -7
View File
@@ -23,8 +23,8 @@ arguments.requestArguments.specificationId=usrCustomerInfo.specificationId; //In
</cfsilent>
<!--- cfproperty использовать не надо, это для веб сервисов --->
<cffunction name="init">
<!--- *** ---------------- !!! note camelCase in keys naming!!! ----------------- --->
<!--- для нового инстанса нам нужно знать хотя бы его класс (сервис) --->
<cfargument name="keys" type="struct" required=true/>
<cfargument name="params" type="struct" required=true/>
@@ -35,8 +35,8 @@ arguments.requestArguments.specificationId=usrCustomerInfo.specificationId; //In
<cfset this.instance_operation_uid = "00000000-0000-0000-0000-000000000000"/><!--- *** костыль default=--->
<cfset this.instance_uid = "00000000-0000-0000-0000-000000000000"/><!--- *** костыль default=--->
<cfif structKeyExists(arguments.keys,"instanceOperationCfsParamUid")>
<cfset this.instance_operation_cfs_param_uid=arguments.keys.instanceOperationCfsParamUid/><!--- *** camelCase!!! --->
<cfif structKeyExists(arguments.keys,"instanceOperationCfsParamUid") AND isValid("guid", arguments.keys.instanceOperationCfsParamUid)>
<cfset this.instance_operation_cfs_param_uid=arguments.keys.instanceOperationCfsParamUid/>
<cfquery name="local.qResolve">
select p.instance_operation_uid, o.instance_uid, p.svc_operation_cfs_param_id
from instance_operation_cfs_param p
@@ -48,7 +48,7 @@ arguments.requestArguments.specificationId=usrCustomerInfo.specificationId; //In
<cfset this.svc_operation_cfs_param_id = local.qResolve.svc_operation_cfs_param_id/>
</cfif>
<!--- *** обратить внимание, тут возможны конфликты противоречивых ключей, мы никак не контролируем. но если ресолвить в обратном порядке, они хотя бы будут согласованными (хотя могут отличаться от аргументов... пойми что лучше... или проверять и бросать исключение --->
<cfif structKeyExists(arguments.keys,"instanceOperationUid")>
<cfif structKeyExists(arguments.keys,"instanceOperationUid") AND isValid("guid", arguments.keys.instanceOperationUid)>
<cfset this.instance_operation_uid=arguments.keys.instanceOperationUid/>
<cfquery name="local.qResolve">
select o.instance_uid
@@ -57,7 +57,7 @@ arguments.requestArguments.specificationId=usrCustomerInfo.specificationId; //In
</cfquery>
<cfset this.instance_uid=toString(local.qResolve.instance_uid)/>
</cfif>
<cfif structKeyExists(arguments.keys,"instanceUid")>
<cfif structKeyExists(arguments.keys,"instanceUid") AND isValid("guid",arguments.keys.instanceUid)>
<cfset this.instance_uid=arguments.keys.instanceUid/>
</cfif>
<cfif structKeyExists(arguments.keys,"svcOperationCfsParamId")><!--- хотя вот этот ключ известен всегда... но для известного параметра мы же можем его не передавать--->
@@ -66,7 +66,8 @@ arguments.requestArguments.specificationId=usrCustomerInfo.specificationId; //In
<cfif structKeyExists(arguments.params,"resourceRealm")>
<cfset this.resourceRealm=arguments.params.resourceRealm/>
</cfif>
<!--- <cfdump var=#this# abort=true/> --->
<!--- <cfdump var=#this# abort=true/> --->
<!--- <cfdump var=#this#/> --->
<cfreturn this>
</cffunction>
@@ -354,7 +355,7 @@ arguments.requestArguments.specificationId=usrCustomerInfo.specificationId; //In
</cffunction>
<cffunction name="getInstanceState" returntype="struct">
<!--- <cffunction name="getInstanceState" returntype="struct">
<cfargument name="instanceUid" type="guid" required="true"/>
<cfset var local={}/>
@@ -376,6 +377,30 @@ arguments.requestArguments.specificationId=usrCustomerInfo.specificationId; //In
<cfreturn structConfig/>
</cfif>
<cfreturn {}/>
</cffunction> --->
<cffunction name="getInstanceState" returntype="struct">
<cfargument name="instanceUid" type="guid" default=#this.instance_uid#/>
<cfset var local={}/>
<cfquery name="local.qInstance" datasource="cmdb">
select g.instance_state_uid, g.version, g.dt_state, g.instance_data, g.is_test, g.instance_uid
from instance_state g
where g.instance_uid=<cfqueryparam cfsqltype="cf_sql_other" value=#arguments.instanceUid#/>
order by g.version desc
limit 1
</cfquery>
<!--- <cfreturn deserializeJson(local.qInstance.instance_data)/><cfabort/> --->
<cftry>
<cfset var structConfig = deserializeJson(local.qInstance.instance_data)/>
<cfcatch type="ANY">
<cfreturn {"error":"error parsing state"}/>
</cfcatch>
</cftry>
<cfif isEmpty(structConfig)>
<cfreturn {}/>
</cfif>
<cfreturn structConfig/>
</cffunction>
@@ -50,6 +50,7 @@ arguments.requestArguments.specificationId=usrCustomerInfo.specificationId; //In
<cfset local.expression = ""/> <!--- нет смысла выносить это в поля класса, оно нужно только локально --->
<cfset local.calculatedValueList = ""/>
<cfset local.keys = deserializeJson(arguments.keys)/>
<cfset local.keys.svcOperationCfsParamId=arguments.svcOperationCfsParamId/><!--- дополняем --->
<cfset local.params = deserializeJson(arguments.params)/>
<cfset local.keys.svcOperationCfsParamId = arguments.svcOperationCfsParamId/> <!--- *** сомнительное дело гонять аргументы туда-сюда --->
@@ -50,11 +50,12 @@ arguments.requestArguments.specificationId=usrCustomerInfo.specificationId; //In
<cfset local.keys = deserializeJson(arguments.keys)/>
<cfset local.params = deserializeJson(arguments.params)/>
<cfset local.keys.svcOperationCfsSubparamId = arguments.svcOperationCfsSubparamId/> <!--- *** сомнительное дело гонять аргументы туда-сюда --->
<cfset local.keys.svcOperationCfsSubparamId = arguments.svcOperationCfsSubparamId/> <!--- *** сомнительное дело гонять аргументы туда-сюда ---><!--- *** по-моему, не используется, поэтому достанем svcOperationCfsParamId прямо тут --->
<cfquery name="local.qCfsSubparam" result="local.result">
select
<m:field_set titleMapOut="local.titleMap" lengthOut="fieldCount">
<m:field>sop.svc_operation_cfs_param_id</m:field>
<m:field>sop.data_type</m:field>
<m:field>sop.svc_operation_cfs_subparam</m:field>
<m:field>sop.expression</m:field>
@@ -69,6 +70,7 @@ arguments.requestArguments.specificationId=usrCustomerInfo.specificationId; //In
</cfif>
<cfset local.expression=local.qCfsSubparam.expression/>
<cfset local.keys.svcOperationCfsParamId = local.qCfsSubparam.svc_operation_cfs_param_id/>
<!--- *** можно обратить внимание, что мы инстанциируем не субпараметр, а параметр (цинично пользуясь их функциональной идентичностью... но некрасиво) --->
<cfif len(local.expression)>