質問
· 2023年10月16日

VsCodeでリモートアクセスした際にSourceControlのUsernameが取得できない。

こんにちは、皆さま。
業務でIRISを用いて開発を行っている者です。

同じ現象に陥っていた方がいれば助言頂きたいのですが、
VsCodeでIRISにリモートで接続した際、SourceControlでUserNameが取得できていないようです。

{
    "objectscript.conn": {
        "host": "xxxx.xxxx.xxxx.xxxx",
        "port": 52773,
        "ns": "RKNK",
        "username": "xxxx",
        "password": "xxxx",
        "active": true
    },
    "editor.formatOnType": true
}

→SourceControlクラスで..Usernameを取得しようとしても値が入っていない。

同じような現象になった方はいらっしゃらないでしょうか?
何か情報をお持ちの方がいらっしゃれば、フォローいただけますと幸いです。

Product version: IRIS 2022.1
ディスカッション (4)2
続けるにはログインするか新規登録を行ってください

SourceControlクラスは、%Studioパッケージのようなので、スタジオ専用のクラスなのではないでしょうか?
IRISへの接続中のアカウントを取得したいという事でしょうか?

Hashimotoさん

コメントいただきありがとうございます!
私の方ではSourceControlをコンパイル時の静的解析のような役割で使っておりまして、
それはVSCodeからsave->import->compileの時でも動作することを確認済みです。

> IRISへの接続中のアカウントを取得したいという事でしょうか?
VsCodeのsettings.jsonで設定したアカウントが、Save等によりIRISにImportを行ったときのユーザー情報になります。
..Usernameは接続が確立したタイミングには入っているものと思ったのですが、
今取得すると空になっています。

Ohataさん

IRIS 2023.1.2を使っていますのでどこかで修正されたのかしれませんが、下記のようなOnAfterSave(内容はあまり気になさらずに...)でimportを実行してみたら下記のように保存されていました。
settings.jsonのusernameを書き換えれば、保存されるユーザ名も連動して変わりました。

USER>zw ^IWA
^IWA=6
^IWA(1)="SuperUser"
^IWA(2)="SuperUser"
^IWA(3)="_SYSTEM"
^IWA(4)="_SYSTEM"
^IWA(5)="SuperUser"
^IWA(6)="SuperUser

Method OnAfterSave(InternalName As %String, Object As %RegisteredObject = {$$$NULLOREF}) As %Status
{
	if ..Debug Write "Method 'OnAfterSave' InternalName:"_InternalName_" Object: "_Object,!
	//DBへの保存は成功させたいのでOKを返す
	If '..IsInitialized  Quit $$$OK

	//default projectは保存しない
	If $E(InternalName,1,$L($$$DEFAULTPRJNAME))=$$$DEFAULTPRJNAME {
		Write $$$MSGNODEFAULTPRJ,!
		Quit $$$OK
	}	

	Set path=..LocalWorkspaceRoot_..GetExtraPath()
	Set ..ExternalName=##class(%ZScc.Utils).ExportSingleItem(InternalName,path,..Debug)
	Set ^IWA($INCREMENT(^IWA))=$USERNAME
	Set ^IWA($INCREMENT(^IWA))=..Username

	Quit $$$OK
}