Hi All
AX 2012 support only a single TFS workspace that mean a
Dynamics AX Developer Box (SQL Server, AOS, etc.) for each developer.
For this reason
Martin DrĂ¡b created a custom Solution in order to help us to achieve
this result, TFS workspaces in AX2012
This solution is fantastic.
The only issue is when an object is
in check-out mode also other developers can modified it also if the check-in can
only be handled by the check-out Owner.
In order to fix the behavior I have
created a new method and modified another one in the SysVersionControlSystemFileBased
Class.
Therefore:
Create a new method like “isCheckedOut”
like this:
//
AddaxWorkspaces
// Denis
20170219 - Check if the current Object is check-out by the current user
boolean
isCheckedOut_dlx(Filename
_filenameCurrentLayer)
{
Set checkedOutObjects =
new Set(Types::String);
SysVersionControlTmpItem items;
SysVersionControlSystem sysVersionControlSystem;
SysVersionControlParameters parameters =
SysVersionControlParameters::find();
str checkFileName;
sysVersionControlSystem =
SysVersionControlSystem::newType(parameters.vcsType);
sysVersionControlSystem.init(parameters);
if (sysVersionControlSystem)
{
items =
sysVersionControlSystem.getCheckedOutItems();
while select items
{
checkFileName = items.Filename;
checkFileName =
strReplace(checkFileName, parameters.AppRoot + '$\\' + parameters.TfsProject +
"\\", "");
if ( _filenameCurrentLayer ==
checkFileName )
Return True;
}
}
return false;
}
Modified the allowEdit method like
this:
…..
//Has the file been checked out
if
(!bitTest(WinAPI::getFileAttributes(filenameCurrentLayer),
#FILE_ATTRIBUTE_READONLY)
&&
this.isCheckedOut_dlx(filenameCurrentLayer) // Denis 20170219 - AddaxWorkspaces
)
return true;
Thanks again to Martin and Stay
Tuned!