Fachhochschule Nordwestschweiz FHNWProject specific questions and answers from the work at the FHNW.RE: Grouping of modelling elements in the modelling-toolkitMateusz Dziedzichttps://www.adoxx.org/live/c/message_boards/find_message?p_l_id=&messageId=10732632017-12-07T14:43:05Z2017-12-07T14:37:05ZA simple way to limit the amount of classes of a model type in the modelling panel is to use the Mode option in the View menu.<br />In order to define a Mode option you have to use the keyword “MODE” in “Library attributes/Add-ons/Modi”. <br /><br />For example we have the following:<br />modeltype: Sample<br />classes:A, B, C, D, E<br />relation classes: anyRany, aRb<br /><br />You could e.g. show all classes in the Mode called “All classes” and only the modelling classes in a Mode called “Modelling classes”. The code for this would look like the following:<div class="code"><span class="code-lines"> 1</span>MODELTYPE "Sample"<br /><span class="code-lines"> 2</span>INCL "A"<br /><span class="code-lines"> 3</span>INCL "B"<br /><span class="code-lines"> 4</span>INCL "C"<br /><span class="code-lines"> 5</span>INCL "D"<br /><span class="code-lines"> 6</span>INCL "E"<br /><span class="code-lines"> 7</span>INCL "anyRany"<br /><span class="code-lines"> 8</span>INCL "aRb"<br /><span class="code-lines"> 9</span>MODE "All classes" from:all<br /><span class="code-lines">10</span>MODE "Modelling classes" from:all<br /><span class="code-lines">11</span>EXCL "anyRany"<br /><span class="code-lines">12</span>EXCL "aRb"<br /></div>Mateusz Dziedzic2017-12-07T14:37:05ZRE: Update attribute values at different elementsMateusz Dziedzichttps://www.adoxx.org/live/c/message_boards/find_message?p_l_id=&messageId=10729252017-12-07T12:02:34Z2017-12-07T12:00:14ZRegarding 2.:<br />In order to make the solution in 1. work also outside the current model, some adaptations have to be made in the update.asc file (section 2)). You will find below the adapted code for the update.asc file and the code for the procedure used in update.asc. <br />In the procedure you use the GET_MODEL_GROUP_TREE_XML, which generates an XML string containing the current model group tree structure. Thus, this XML string also contains modelids of all models. In the next step you search for the <model> tags in the XML string and copy the value of the attribute id to a string called lModelIDs. The result is a list of all modelids. The adaptation in the update.asc file is, that you (FOR-) loop through the modelids list to get the objects of class A from all models. The result is a list of all objects of class A not just from the current model, but from all models. <br /><br />2) update.asc:<div class="code"><span class="code-lines"> 1</span>CC "Core" GET_CLASS_ID objid: (nInstId)<br /><span class="code-lines"> 2</span>#-->RESULT ecode:intValue classid:intValue<br /><span class="code-lines"> 3</span>SETL nClassID: (classid)<br /><span class="code-lines"> 4</span><br /><span class="code-lines"> 5</span>CC "Core" GET_CLASS_NAME classid: (nClassID)<br /><span class="code-lines"> 6</span>#-->RESULT ecode:intValue classname:strValue isrel:intValue<br /><span class="code-lines"> 7</span>SETL sClassName: (classname)<br /><span class="code-lines"> 8</span><br /><span class="code-lines"> 9</span>IF(sClassName = "A") {<br /><span class="code-lines">10</span> CC "Core" GET_ATTR_NAME attrid: (nAttrId)<br /><span class="code-lines">11</span> #-->RESULT ecode:intValue attrname:strValue<br /><span class="code-lines">12</span> SETL sAttrName: (attrname)<br /><span class="code-lines">13</span><br /><span class="code-lines">14</span> IF(sAttrName = "a3") {<br /><span class="code-lines">15</span> CC "Core" GET_ATTR_VAL objid: (nInstId) attrid: (nAttrId)<br /><span class="code-lines">16</span> #-->RESULT ecode:intValue val:anyValue<br /><span class="code-lines">17</span> SETL sAttrVal: (val)<br /><span class="code-lines">18</span><br /><span class="code-lines">19</span> SETL lObjids: ("")<br /><span class="code-lines">20</span> GET_ALL_MODELIDS lModelIDs: ("") nStartingPointForSearch: (0 ) result:lModelIDs<br /><span class="code-lines">21</span> FOR i from: (0) to: (tokcnt(lModelIDs)-1) {<br /><span class="code-lines">22</span> CC "Core" LOAD_MODEL modelid: (VAL (token(lModelIDs,i)))<br /><span class="code-lines">23</span> #-->RESULT ecode:intValue isloaded:intValue<br /><span class="code-lines">24</span> CC "Core" GET_ALL_OBJS_OF_CLASSNAME modelid: (VAL(token(lModelIDs,i))) classname: (sClassName)<br /><span class="code-lines">25</span> #-->RESULT ecode:intValue objids:list<br /><span class="code-lines">26</span><br /><span class="code-lines">27</span> SETL lObjids: (lObjids + objids + " ")<br /><span class="code-lines">28</span> }<br /><span class="code-lines">29</span> FOR i from: (0) to: (tokcnt(lObjids)-1) {<br /><span class="code-lines">30</span> CC "Core" SET_ATTR_VAL objid: (VAL (token(lObjids,i)))attrname: (sAttrName) val: (sAttrVal)<br /><span class="code-lines">31</span> }<br /><span class="code-lines">32</span> }<br /><span class="code-lines">33</span>}<br /></div><br />3) GET_ALL_MODELIDS procedure:<div class="code"><span class="code-lines"> 1</span>PROCEDURE global GET_ALL_MODELIDS lModelIDs:string nStartingPointForSearch:integer result:reference<br /><span class="code-lines"> 2</span>{<br /><span class="code-lines"> 3</span> CC "Documentation" GET_MODEL_GROUP_TREE_XML<br /><span class="code-lines"> 4</span> #--> RESULT ecode:intValue xml:strValue<br /><span class="code-lines"> 5</span> <br /><span class="code-lines"> 6</span> SETL nClosingRootTagPosition: (search(xml,"</root>",nStartingPointForSearch))<br /><span class="code-lines"> 7</span> WHILE (nStartingPointForSearch < nClosingRootTagPosition) {<br /><span class="code-lines"> 8</span> SETL nStartPositionOfGroupTag: (search(xml,"<model",nStartingPointForSearch))<br /><span class="code-lines"> 9</span> SETL nEndPositionOfGroupTag: (search(xml,">",nStartPositionOfGroupTag))<br /><span class="code-lines">10</span> SETL sModelID: (copy(xml,search(xml,"=",nStartPositionOfGroupTag) + 2,<br /><span class="code-lines">11</span> (search(xml,"name",nStartPositionOfGroupTag) - search(xml,"=",nStartPositionOfGroupTag)-4)))<br /><span class="code-lines">12</span> SETL nStartingPointForSearch: (nEndPositionOfGroupTag)<br /><span class="code-lines">13</span> <br /><span class="code-lines">14</span> IF (nStartingPointForSearch = -1) {<br /><span class="code-lines">15</span> BREAK<br /><span class="code-lines">16</span> }<br /><span class="code-lines">17</span> SETL lModelIDs: (lModelIDs + sModelID + " ")<br /><span class="code-lines">18</span> }<br /><span class="code-lines">19</span> SETL result: (lModelIDs)<br /><span class="code-lines">20</span>}<br /></div>Mateusz Dziedzic2017-12-07T12:00:14ZRE: Update attribute values at different elementsMateusz Dziedzichttps://www.adoxx.org/live/c/message_boards/find_message?p_l_id=&messageId=10721252017-12-06T14:25:12Z2017-12-06T14:08:26ZRegarding1.:<br />The following code updates the value of the attribute “a3” for all objects of class “A” and its subclasses (within a model) whenever the value of “a3” is changed in an object of class “A”.<br /><br />1) Insert the following code to “Library attributes/Add-ons/Externalcoupling” in your dynamic library:<div class="code"><span class="code-lines"> 1</span>ON_EVENT"AfterEditAttributeValue"<br /><span class="code-lines"> 2</span>{<br /><span class="code-lines"> 3</span> SETsParams: ("")<br /><span class="code-lines"> 4</span> SETsParams: (sParams+ "SET nModelId: (" + ( STR modelid) + ")\n")<br /><span class="code-lines"> 5</span> SETsParams: (sParams+ "SET nInstId: (" + ( STR instid) + ")\n")<br /><span class="code-lines"> 6</span> SETsParams: (sParams+ "SET nAttrId: (" + ( STR attrid) + ")\n")<br /><span class="code-lines"> 7</span> SETsParams: (sParams+ "SET nAttrTypeId: (" + ( STR attrtypeid)+ ") \n")<br /><span class="code-lines"> 8</span> CC"AdoScript" FREAD file: ("%PathToFile%\\update.asc")<br /><span class="code-lines"> 9</span> #-->RESULT text:strValue ecode:intValue<br /><span class="code-lines">10</span> EXECUTE(sParams + text)<br /><span class="code-lines">11</span>}<br /></div><br />2) Insert the following code to the AdoScript file update.asc:<div class="code"><span class="code-lines"> 1</span>CC "Core" GET_CLASS_ID objid: (nInstId)<br /><span class="code-lines"> 2</span>#-->RESULT ecode:intValue classid:intValue<br /><span class="code-lines"> 3</span>SETL nClassID: (classid)<br /><span class="code-lines"> 4</span><br /><span class="code-lines"> 5</span>CC "Core" GET_CLASS_NAME classid: (nClassID)<br /><span class="code-lines"> 6</span>#-->RESULT ecode:intValue classname:strValue isrel:intValue<br /><span class="code-lines"> 7</span>SETL sClassName: (classname)<br /><span class="code-lines"> 8</span><br /><span class="code-lines"> 9</span>IF(sClassName = "A") {<br /><span class="code-lines">10</span> CC "Core" GET_ATTR_NAME attrid: (nAttrId)<br /><span class="code-lines">11</span> #-->RESULT ecode:intValue attrname:strValue<br /><span class="code-lines">12</span> SETL sAttrName: (attrname)<br /><span class="code-lines">13</span><br /><span class="code-lines">14</span> IF(sAttrName = "a3") {<br /><span class="code-lines">15</span> CC "Core" GET_ATTR_VAL objid: (nInstId) attrid: (nAttrId)<br /><span class="code-lines">16</span> #-->RESULT ecode:intValue val:anyValue<br /><span class="code-lines">17</span> SETL sAttrVal: (val)<br /><span class="code-lines">18</span> <br /><span class="code-lines">19</span> CC "Core" GET_ALL_OBJS_OF_CLASSNAME modelid: (nModelId) classname: (sClassName)<br /><span class="code-lines">20</span> #-->RESULT ecode:intValue objids:list<br /><span class="code-lines">21</span> SETL lObjids: (objids)<br /><span class="code-lines">22</span> <br /><span class="code-lines">23</span> FOR i from: (0) to: (tokcnt(lObjids)-1) {<br /><span class="code-lines">24</span> CC "Core" SET_ATTR_VAL objid: (VAL (token(lObjids,i))) attrname: (sAttrName) val: (sAttrVal)<br /><span class="code-lines">25</span> }<br /><span class="code-lines">26</span> }<br /><span class="code-lines">27</span>}<br /></div>Mateusz Dziedzic2017-12-06T14:08:26ZRE: Naming of modelling elementsMateusz Dziedzichttps://www.adoxx.org/live/c/message_boards/find_message?p_l_id=&messageId=7497692017-01-18T08:54:39Z2017-01-16T15:34:01ZDear Mr. Sibold,<br /><br />One way to solve the problem in Question Nr. 2 would be the following:<br />1. You could change the ATTR in Line Number 39 of the GraphRep to "ClassName" and set the Standard Value of the Attribute "Bezeichnung" to "Rolle".<br />2. To solve the issue with the limitation of elements you could add the following code to the External Coupling (Library attributes.../Add-ons):<br /><div class="code"><span class="code-lines"> 1</span>ON_EVENT "AfterCreateModelingNode"<br /><span class="code-lines"> 2</span>{<br /><span class="code-lines"> 3</span> CC "Modeling" GET_ACT_MODEL<br /><span class="code-lines"> 4</span> SETL nModelId: (modelid)<br /><span class="code-lines"> 5</span> SETL aObjIDs: ({})<br /><span class="code-lines"> 6</span> CC "Core" GET_ALL_OBJS_OF_CLASSNAME modelid: (modelid) classname:"Role"<br /><span class="code-lines"> 7</span> #-->RESULT ecode:intValue objids:list<br /><span class="code-lines"> 8</span> SETL lObjIDs: (objids)<br /><span class="code-lines"> 9</span> <br /><span class="code-lines">10</span> IF (tokcnt(lObjIDs) = 2) {<br /><span class="code-lines">11</span> PROCEDURE global LIST_TO_ARRAY list:string array:array nI:integer result:reference<br /><span class="code-lines">12</span> {<br /><span class="code-lines">13</span> IF(token(list, nI)!="") {<br /><span class="code-lines">14</span> SETL dummy: (aappend(array, VAL token(list, nI)))<br /><span class="code-lines">15</span> LIST_TO_ARRAY list: (list) array: (array) nI: (nI+1) result:array<br /><span class="code-lines">16</span> }<br /><span class="code-lines">17</span> SETL result: (array)<br /><span class="code-lines">18</span> }<br /><span class="code-lines">19</span> LIST_TO_ARRAY list: (lObjIDs) array: (aObjIDs) nI: (0) result:aObjIDs<br /><span class="code-lines">20</span><br /><span class="code-lines">21</span> SETL nCountObj: (aObjIDs.length)<br /><span class="code-lines">22</span> CC "Core" DELETE_OBJS modelid: (modelid) objids: (aObjIDs[1])<br /><span class="code-lines">23</span> #-->RESULT ecode:intValue errobjs:idList<br /><span class="code-lines">24</span> SET dummy: (aerase(aObjIDs, 1))<br /><span class="code-lines">25</span> CC "AdoScript" ERRORBOX "Error message" <br /><span class="code-lines">26</span> }<br /><span class="code-lines">27</span>}<br /></div><br />Regarding Question Nr. 1 the following solution is possible:<br />1. Create a new Attribute:<br /> Attribute name: Id<br /> Type: EXPRESSION<br /> Standard value: EXPR type:string expr:fixed: (STR objid)<br />2. Add the following code to the External Coupling(Library attributes.../Add-ons): <br /><div class="code"><span class="code-lines"> 1</span>ON_EVENT "AfterCreateModelingNode"<br /><span class="code-lines"> 2</span>{<br /><span class="code-lines"> 3</span> CC "Modeling" GET_ACT_MODEL<br /><span class="code-lines"> 4</span> SETL nModelId: (modelid)<br /><span class="code-lines"> 5</span> CC "Core" GET_ALL_OBJS_OF_CLASSNAME modelid: (modelid) classname:"Role Acute Physician"<br /><span class="code-lines"> 6</span> #-->RESULT ecode:intValue objids:list<br /><span class="code-lines"> 7</span> <br /><span class="code-lines"> 8</span> IF (tokcnt(objids)>0) {<br /><span class="code-lines"> 9</span> CC "Core" GET_ATTR_VAL objid: (VAL (token(objids,tokcnt(objids)-1))) attrname: ("Id")<br /><span class="code-lines">10</span> #-->RESULT ecode:intValue val:anyValue<br /><span class="code-lines">11</span> CC "Core" SET_ATTR_VAL objid: (VAL (token(objids,tokcnt(objids)-1))) attrname: ("Name") val: ("Acute Physician" + " - " + (val))<br /><span class="code-lines">12</span> }<br /><span class="code-lines">13</span>}<br /></div><br /><br />Best regards,<br />MateuszMateusz Dziedzic2017-01-16T15:34:01ZRE: Update attribute values at different elementsPascal Siboldhttps://www.adoxx.org/live/c/message_boards/find_message?p_l_id=&messageId=7327632016-12-12T10:49:40Z2016-12-12T10:43:50ZI managed to do it only on the the same element with the following code:<div class="code"><span class="code-lines"> 1</span>ON_EVENT "AfterEditAttributeValue" {<br /><span class="code-lines"> 2</span> CC "Core" GET_CLASS_ID objid:(instid)<br /><span class="code-lines"> 3</span> SETL nCurrentClassID:(classid)<br /><span class="code-lines"> 4</span> CC "Core" GET_CLASS_NAME classid:(nCurrentClassID)<br /><span class="code-lines"> 5</span> SETL sCurrentClassName:(classname)<br /><span class="code-lines"> 6</span> IF (sCurrentClassName = "KoGu") {<br /><span class="code-lines"> 7</span> CC "Core" GET_ATTR_NAME attrid:(attrid)<br /><span class="code-lines"> 8</span> SETL sAttrName:(attrname)<br /><span class="code-lines"> 9</span> IF (sAttrName = "First name") {<br /><span class="code-lines">10</span> CC "Core" GET_ATTR_VAL objid:(instid) attrid:(attrid)<br /><span class="code-lines">11</span> SETL sTypeValue:(val)<br /><span class="code-lines">12</span> CC "Core" SET_ATTR_VAL objid:(instid) attrname:("Last name") val:(val)<br /><span class="code-lines">13</span> }<br /><span class="code-lines">14</span> } <br /><span class="code-lines">15</span>}<br /></div><br /><br />Is there any solution to do it:<ol style="list-style: decimal inside;"><li>On another element?</li><li>On another element in another model?</li></ol>Pascal Sibold2016-12-12T10:43:50ZRE: Change GraphRep based on countPascal Siboldhttps://www.adoxx.org/live/c/message_boards/find_message?p_l_id=&messageId=7284812016-12-05T15:42:01Z2016-12-05T15:20:52ZIf there is a solution, which scales better (e.g. on count of amount of clicked checkboxes), I would still be interested. For the example with the checkboxes I have shown, there are just too many possibilities.Pascal Sibold2016-12-05T15:20:52ZRE: Update attribute values at different elementsPascal Siboldhttps://www.adoxx.org/live/c/message_boards/find_message?p_l_id=&messageId=7284422016-12-05T13:36:40Z2016-12-05T13:36:40ZHello all<br /><br />Any solution for this? This is my main pain point at the moment.<br /><br />Thanks in advance and best regards,<br />PascalPascal Sibold2016-12-05T13:36:40ZRE: Change GraphRep based on countPascal Siboldhttps://www.adoxx.org/live/c/message_boards/find_message?p_l_id=&messageId=7284392016-12-05T13:48:27Z2016-12-05T13:35:31ZHello<br /><br />I also solved it myself today with nearly the same solution but yours is even better with referencing to the .leo file only.<br /><br />Thanks a lot!<br /><br />Regards,<br />PascalPascal Sibold2016-12-05T13:35:31ZRE: Change GraphRep based on counthttps://www.adoxx.org/live/c/message_boards/find_message?p_l_id=&messageId=7283702016-12-05T12:00:16Z2016-12-05T11:59:07ZDear Pascal,<br />One way to do this is to include files with the GraphRep Code depending on the values of the attributes. <br />For an example I will take the second group “Physical Transfer Status”.<br /> In the AttrRep you have the following attributes:<br /> GROUP "Physical Transfer Status"<br /> ATTR "Hospital approval" ctrltype:check checked-value:"Yes" unchecked-value:"No"<br /> ATTR "Reha approval" ctrltype:check checked-value:"Yes" unchecked-value:"No"<br /> ATTR "Patient in reha" ctrltype:check checked-value:"Yes" unchecked-value:"No"<br /> ENDGROUP<br /><br />To achieve the change of the appearance depending on checked boxes you can operate with If...Else statements. The GraphRep of your modelling element could look as follows:<br /> GRAPHREP<br /><br />AVAL hoap:"Hospital approval"<br /> AVAL reap:"Reha approval"<br /> AVAL painre:"Patient in reha"<br /><br />IF (hoap="Yes" AND reap="Yes" AND painre="Yes") {<br /> @INCLUDE "db:\\appearance1_GraphRep.leo"<br /> }<br /> ELSIF (hoap="No" AND reap="Yes" AND painre="Yes") {<br /> @INCLUDE "db:\\appearance2_GraphRep.leo"<br /> }<br /> ELSE {<br /> @INCLUDE "db:\\appearance3_GraphRep.leo"<br /> }<br /><br />I hope I could help.2016-12-05T11:59:07ZRE: Change GraphRep based on countPascal Siboldhttps://www.adoxx.org/live/c/message_boards/find_message?p_l_id=&messageId=7252472016-12-01T14:07:38Z2016-12-01T14:07:31ZHere an example of the checkboxes on the element:Pascal Sibold2016-12-01T14:07:31ZRE: Update attribute values at different elementsPascal Siboldhttps://www.adoxx.org/live/c/message_boards/find_message?p_l_id=&messageId=7250452016-12-01T07:23:38Z2016-12-01T07:23:38ZI forgot to mention: the elements that need to be updated can be from/in different modeltypes.Pascal Sibold2016-12-01T07:23:38ZUpdate attribute values at different elementsPascal Siboldhttps://www.adoxx.org/live/c/message_boards/find_message?p_l_id=&messageId=7250312016-12-01T05:51:56Z2016-12-01T05:51:51ZHello<br /><br />In my language, there will be different specific document/data modelling elements of which each has a different set of attributes. However, there is some redundancy in the available attributes. So for example there are 3 modelling elements that have an attribute for the name of a person. In order to avoid, that the same data has to be entered for each attribute, whenever a user changes data, it shall be changed at all other elements where the same information is used.<br /><br />Is there any script or anything available to solve this?<br /><br />Thanks and best regards,<br />PascalPascal Sibold2016-12-01T05:51:51ZChange GraphRep based on countPascal Siboldhttps://www.adoxx.org/live/c/message_boards/find_message?p_l_id=&messageId=7250232016-12-01T13:35:06Z2016-12-01T05:45:43ZHello<br /><br />I have a modelling element, which should change it's appearance based on how many checkboxes are checked while each checkbox is an attribute (enumeration). When adding the modelling element to a new model in the modelling toolkit, the initial shape has to be shown (without any checkboxes checked). Whenever the user does changes on the checkbox, the appearance shall change.<br /><br />Is there any script or anything available to solve this? GraphRep code for each of the different "states" is available.<br /><br />Thanks and best regards,<br />PascalPascal Sibold2016-12-01T05:45:43ZRE: Naming of modelling elementsPascal Siboldhttps://www.adoxx.org/live/c/message_boards/find_message?p_l_id=&messageId=7242602016-11-29T09:13:11Z2016-11-29T09:13:11ZI found out, that this happens only when copying existing classes rather than creating new ones. Thus seems to be solved.<br /><br />But I still would be happy to receive an answer on points 1. and 2.<br /><br />Thanks a lot.Pascal Sibold2016-11-29T09:13:11ZGrouping of modelling elements in the modelling-toolkitPascal Siboldhttps://www.adoxx.org/live/c/message_boards/find_message?p_l_id=&messageId=7206682016-11-23T08:53:32Z2016-11-23T08:53:18ZHello<br /><br />In order to limit the amount of modelling elements on the left side of the modelling-toolkit I would like to group some of them (which belong together). So for example I have the general element "Role" and some specific role elements such as Nurse or Physician. In the modelling-toolkit I would like to just show one for the user on the left side while the others only appear when hovering over the role element with the mouse. Then a user can choose the element he wants.<br /><br />Is this possible to implement in ADOxx?<br />PS: I do not want to solve it like the BPMN events where you have 1 element and on this choose the appearance. Because then some other stuff wont work anymore I think or is at least more complex. As in my case I also have different attributes for each element and want to "send" the value of these attributes to other classes.<br /><br />See also the attached screenshot of such groups.<br /><br />Thanks and regards,<br />PascalPascal Sibold2016-11-23T08:53:18ZNaming of modelling elementsPascal Siboldhttps://www.adoxx.org/live/c/message_boards/find_message?p_l_id=&messageId=7206512016-11-23T08:32:02Z2016-11-23T08:30:05ZHello<br /><br />I noticed some "strange" behavior regarding the naming of modelling elements in the modelling toolkit and also have some questions.<br /><br />Scenario: I use the existing class "Role" from the LearnPAd library to copy it to create several new specific Roles (e.g. Physician, Nurse). There is a different behavior for the naming if I choose Role as Superclass or the element above it (__S_group__). If I choose Role as Superclass (what I would like to do in order to inherit all relations), all elements are only called "Rolle" in the modelling toolkit and the name when double-clicking it is read-only eventhough when double-clicking the element, the name attribute actually says e.g. Role Acute Physician-23606 (this value can be changed but is not shown in the model). When choosing __S_group__ as superclass, this does not happen and the name in the model is then e.g. Role Acute Physician-23606. But then all relations are not inherited.<br />For some other elements I was able to do it without a problem but for some elements, this behavior happens. So there seems to be something wrong with "Role" I guess.<br /><br />How can this be solved, that instead of "Rolle" the actual class name is shown?<br /><br />For your reference, the code of the class "Role":<br /><br />GraphRep:<br /><div class="code"><span class="code-lines"> 1</span><br /><span class="code-lines"> 2</span>GRAPHREP<br /><span class="code-lines"> 3</span>SHADOW off<br /><span class="code-lines"> 4</span><br /><span class="code-lines"> 5</span>AVAL sp:"Language"<br /><span class="code-lines"> 6</span>IF (sp = "System")<br /><span class="code-lines"> 7</span> IF (_uilang = "de")<br /><span class="code-lines"> 8</span> SET sp:"German"<br /><span class="code-lines"> 9</span> ELSE<br /><span class="code-lines">10</span> SET sp:"English"<br /><span class="code-lines">11</span> ENDIF<br /><span class="code-lines">12</span>ENDIF<br /><span class="code-lines">13</span><br /><span class="code-lines">14</span>AVAL col:"fontcolor"<br /><span class="code-lines">15</span>AVAL set-default:"no" mono:"Monochrome view"<br /><span class="code-lines">16</span>IF (mono = "yes")<br /><span class="code-lines">17</span> SET bMono:1<br /><span class="code-lines">18</span>ELSE<br /><span class="code-lines">19</span> SET bMono:0<br /><span class="code-lines">20</span>ENDIF<br /><span class="code-lines">21</span><br /><span class="code-lines">22</span>IF (bMono)<br /><span class="code-lines">23</span> SET color_lightskyblue:(rgbval("white"))<br /><span class="code-lines">24</span> SET col:(rgbval("black"))<br /><span class="code-lines">25</span> FILL color:(color_lightskyblue)<br /><span class="code-lines">26</span>ELSE<br /><span class="code-lines">27</span> SET color_lightskyblue:"lightskyblue"<br /><span class="code-lines">28</span> SHADOW off<br /><span class="code-lines">29</span> CLIP_ELLIPSE rx:.78cm ry:.68cm<br /><span class="code-lines">30</span> GRADIENT_RECT x:-.75cm y:-0.75cm w:1.5cm h:1.5cm style:downdiag color1:(rgbval (color_lightskyblue, 1.4)) color2:(rgbval (color_lightskyblue, 0.7))<br /><span class="code-lines">31</span> FILL style:null <br /><span class="code-lines">32</span> PEN w:0.08cm color:(rgbval (color_lightskyblue, 0.7)) join:miter<br /><span class="code-lines">33</span> CLIP_OFF <br /><span class="code-lines">34</span>ENDIF<br /><span class="code-lines">35</span><br /><span class="code-lines">36</span>ELLIPSE rx:.75cm ry:.65cm<br /><span class="code-lines">37</span>FONT color:(col)<br /><span class="code-lines">38</span>IF (sp = "English")<br /><span class="code-lines">39</span> ATTR "Name" y:.8cm w:c:2.8cm h:t<br /><span class="code-lines">40</span>ELSE<br /><span class="code-lines">41</span> ATTR "Bezeichnung" y:.8cm w:c:2.8cm h:t<br /><span class="code-lines">42</span>ENDIF<br /><span class="code-lines">43</span><br /><span class="code-lines">44</span>FONT "Arial" h:32pt color:black<br /><span class="code-lines">45</span>TEXT "R" y:.1cm w:c h:c<br /></div><br /><br />AttrRep:<div class="code"><span class="code-lines"> 1</span>NOTEBOOK<br /><span class="code-lines"> 2</span><br /><span class="code-lines"> 3</span>#-----------------------<br /><span class="code-lines"> 4</span>LANG "en"<br /><span class="code-lines"> 5</span>#-----------------------<br /><span class="code-lines"> 6</span>CHAPTER "Description"<br /><span class="code-lines"> 7</span>ATTR "Name"<br /><span class="code-lines"> 8</span>ATTR "Description" lines:5 <br /><span class="code-lines"> 9</span>ATTR "Comment" lines:5<br /><span class="code-lines">10</span>ATTR "Referenced Competency Profile"<br /></div><br />See also attached a screenshot from the modelling-toolkit.<br /><br />Also, I would like to change following things:<ol style="list-style: decimal inside;"><li>I would like to give the elements a default-name, which is not the same as the class name e.g. instead of Role Acute Physician-23606 I just want to name it Acute Physician-23606 (this value can be changed by the user afterwards when double-clicking. How can this be done?</li><li>For a different scenario I would like that the ID of the element is not shown anymore by default in the model and that only 1 of this element can be included in the model. Thus the model is limited to 1 element of this type. How can this be done?</li></ol>Thanks and best regards<br />PascalPascal Sibold2016-11-23T08:30:05ZRE: GraphRep - Using images for the internetWilfrid Utzhttps://www.adoxx.org/live/c/message_boards/find_message?p_l_id=&messageId=7100552016-11-14T08:25:44Z2016-11-14T08:25:44ZGreat! Let me know what you have accomplished. Would also be great to see your work as part of our GRAPHREP repository at <a href="https://www.adoxx.org/live/adoxx-graphrep-repository-wiki/-/wiki/GRAPHREP+Repository/FrontPage">https://www.adoxx.org/live/adoxx-graphrep-repository-wiki/-/wiki/GRAPHREP+Repository/FrontPage</a>.<br /><br />I do have in mind that there is a patient GraphRep implementation in there ....Wilfrid Utz2016-11-14T08:25:44ZRE: GraphRep - Using images for the internetPascal Siboldhttps://www.adoxx.org/live/c/message_boards/find_message?p_l_id=&messageId=7097692016-11-14T07:59:10Z2016-11-14T07:59:10ZHi Wilfrid<br /><br />Thank you for your quick reply.<br />Sounds reasonable to me. Thus the code from the OMiLAB GraphRep creator could be used as-is, I just need to import the png files with the respective ADOxx feature. That's great.<br />I will try to solve the issue with the provided documentation, I think that should be possible. In case there are future questions, I will let you know. I am just in the beginning of working with ADOxx =)<br /><br />Regards,<br />PascalPascal Sibold2016-11-14T07:59:10ZRE: GraphRep - Using images for the internetWilfrid Utzhttps://www.adoxx.org/live/c/message_boards/find_message?p_l_id=&messageId=7097612016-11-14T07:33:43Z2016-11-14T07:33:43ZHi Pascal,<br /><br />thank you for your message. The solution is to provide the images as part of your library and have them stored in the the file-space of the library. This means that static paths to hard-drives need to be replaced with "db:\\" instead and the images need to be imported in the library using the "File Management" functionality of the Development Toolkit. By the way, the same also applies for any functionalty in AdoScript you might want to implement at a later stage ...<br /><br />A related post to this one: https://www.adoxx.org/live/faq/-/message_boards/message/22732<br />HowTo Video on Youtube: https://www.youtube.com/watch?v=ILI1FPyRMuI<br /><br />Does this fix your issue? A direct use of internet resources is not supported as this would require to have a constant connection to the net and disallow for offline use.Wilfrid Utz2016-11-14T07:33:43ZGraphRep - Using images for the internetPascal Siboldhttps://www.adoxx.org/live/c/message_boards/find_message?p_l_id=&messageId=7094712016-11-13T12:03:10Z2016-11-13T11:47:20ZHello<br /><br />I am currently developing a new DSML for a healthcare process as part of my Masters Thesis. For this purpose I plan to reuse some existing modelling elements (e.g. Role element of the organizational model) to create domain-specific concepts (e.g. Patient Role element). In order to do this, I planned to use free icons from the internet (e.g. http://www.freeiconspng.com/uploads/patient-icon-png-21.png). <br />I designed several new modelling elements with the help of the OMiLAB GraphRep creator. It provides a feature to include png images from the internet which delivers code such as this one:<br />BITMAP "db:\\patient-icon-png-21.png" x:-43pt y:-53pt w:85pt h:89pt<br /><br />However, I did not manage to use this code or in general images from the internet in GraphRep of ADOxx. I suggest, that OMiLAB stores them on their own db where they can be used for OMiLAB projects. Also providing the ADOxx GraphRep with the full link does not work.<br />The only way I managed to use images was when saving the locally on my harddisk:<br />SET filename:"d:\\f5fe024a8c.png"<br />BITMAPINFO (filename)<br />BITMAP (filename) x:-27pt y:-56.5pt w:56pt h:53pt<br /><br />The problem with this solution is, that it will only work if the images are stored at exactly this location on the hard drive of the user. The distribution of this DSML should in the end work out of the box without having to save images at the exact location manually.<ol style="list-style: decimal inside;"><li>Is there any possibility to use links to an image from the internet in the ADOxx GraphRep? This would be the preferred solution</li><li>If not, can/are they somehow provided together with the db to other users? I guess in this solution, a relative path to the image has to be used in GraphRep (I am not yet experience in providing a developed language to others, I only noticed that if i delete them locally, they are no more shown)</li></ol><br />Thanks for the support on this.<br />PascalPascal Sibold2016-11-13T11:47:20Z