Programati​cally Assigning Step Type Properties

I have developed several COM instrument drivers in Visual Basic 6.0 which I can call from TestStand using the ActiveX/COM adapter. However, I would like to be able to create a custom step type for each of these ActiveX servers. Each server provides several creatable classes and a number of interfaces. Ideally I'd like to create a custom step type that references the GUID of my server but have the ability to programatically assign the step properties such as Interface ID and CoClass ID to use the classes and interfaces of my server that I want need to access.
I have noticed that it is possible to create a step type (IEngine.NewStepType method) and set the Automation Adpater. Then I can programatically access its hidden properties (e.g.TS.SData.Call.CoClass). However, I am unsure of how to save and/or access this newly created step type. Where is it stored and how can I insert steps using of the new step type?
I have attached a sequence I've been working on. This has dependencies on a Station global and a server unique to my system but illustrates what I've been trying to do. Do you have any advice of what I need to do next or have any examples available where this sort of thing has been done in the past.
Thanks.

Hi David,
Here is some steps for saving your Step types.
You will need to create a type palette Ini file to hold your step types.
Get a PropertyObjectFile reference by calling Engine.NewPropertyObjectFile(FileType_TypePaletteF​ile).
Set the path of the ini file with PropertyObjectFile(Path).
Get a TypeUserList reference by calling PropertyObjectFile.TypeUsageList().
Get a count of the number of Types in the TypeUsageList by calling TypeUsageList.NumTypes().
This point create your Step types (as you have done). You will need a PropertyObject reference to your steptypes for use with the TypeUsageList.InsertType().
Using each steptype PorpertyObject reference.
Insert the Type into the TypeUsageList by calling TypeUsageList.InsertType(step type propertyobject ref, index (which will be your count), typeCategoryParam = TypeCategory_StepType)
Call the PropertyObjectFile.IncChangeCount() to indicate file changed.
Increment the count and repeat Insert for each of your step types.
save the ini file PropertyObjectFile.SaveFileIfModified(prompt = TRUE).
Tidy up by releasing references etc.
I know this works for TestStand 2.0.1f1 and hopefully it will work for 3.1. Unfortunately I haven't got 3.x installed on a PC to try it.
Hope this gets you started.
Regards
Ray Farmer
Regards
Ray Farmer

Similar Messages

  • Step type properties dialog too small!

    Hi!
    Just have a look at the screenshot of the step properties dialog. It does not show everything I used to see in earlier versions of test stand. There are no buttons visible!
    What to do?
    ciao
     weltaran
    Attachments:
    StepTypeDialog_too_small.png ‏47 KB

    Na, i don't think that this is purely related to Windows 7. At least on my Windows 7 machine, it does not display the dialog as seen in the screenshot.
    Therefore, we have to dig in what possible reasons could be.
    The screenshot shows the step properties of a Tcl step from the NI example opened in the NI Sequence Editor in the type palette. weltaran states that it does appear for every step type there, but is limited to step property dialogs in the type palette (that's what i understood).
    My first question, independend of above chapter: What happens, if you change screen resolution? Does it improve or worthen the issue?
    Norbert
    CEO: What exactly is stopping us from doing this?
    Expert: Geometry
    Marketing Manager: Just ignore it.

  • Programatically show/hide step types in the Steps pane

    When a user on a new Teststand Development bench syncs to a central repository of custom Teststand components and supporting LabVIEW code, I would like to expose only custom step types saved in myTpes.ini in the steps pane. None of the standard step types should be available unless the use explicitly opens an existing sequence file that contains them. I believe this can be done through the API when Teststand launches, but I don't know where to look for the appropriate API methods. For example, is there a methods to load or unload a specific type palette to or from memory? Any help would be much appreciated.

    Hi Charlie,
    As of right now, there does not appear to be a way to programmatically change step type menu items from visible to hidden via the TestStand API.  Someone has posted a product suggestion for this type of functionality to be made available in a later version of the software, however.  You can view it here.  I would recommend giving this idea kudos in order to boost its chances of being implemented in a future release.
    Hope this helps!
    Regards,
    Stephanie R.
    National Instruments
    Stephanie R.
    National Instruments

  • Assignment of Step type and CR step for MDG_S

    Hi
    This is in continuaton for thread MDG_S workflow.
    I original issue which is for MDGS when I assigned WS543000005 to CR type and sumitted CR goes no where,
    As as per SWEL it  shows No Reciver Found enen though GET_AGENT table is maintained.
    In another system I found that WS531000044 is assigned ti CR Type Then I tested it and found that CR creates Work Items also upto final processing.
    as per below
    Before CR Submission : CR status is 02: Changes to be executed
    After CR Submission : CR status is 01:To be considered and Approved
    After CR Reviewer approves : CR status is 09: Dependant Data to be processed /Approved
    After Purchase reviewer Finalize processing :CR status is 09: Dependant Data to be processed /Approved
    After Finainace reviewer Finalixe processing :CR status is 09: Dependant Data to be processed /Approved
    Now I can not see CR any where even though CR step 04 and 04 assigned to my user ID
    I have some questions as Description in Define Change Request Steps is not Mataching with description in GET_AGENT desesion table.
    Also it is observed that step 80 is not assigned to WS531000044 in IMG node Define Change Request Steps but it can be seen in GET_AGENT decesion table and step no 06 and 07 does not appears in GET_AGENT decesion table ( In edit mode).
    Can you explain from where assignment of  CR steps to CR type in desion table are taken ino accout ?
    Why description is not matched for steps under IMG and in decesion table?
    Can you explain me releationship between CR step and step type,CR Status and where they \maintained in IMG and how proceeses modelling is diffenent t for determination of Next CR step in case of WS531000044 ?

    Please keep in mind that "hard-wired" workflow templates are just that: hard-wired. This means that a specific workflow template (for example WS53100044) will always have the same number of steps, each step will always have the same type and number, agents will always be assigned in the same way, and those can't be altered by configurations. To understand each workflow template's behavior, you can either open that template in transaction PFTC or SWDD, or alternatively, read the exact behavior in SAP Help documentation. You basically need to google the workflow template number and you should be able to find the description of each template's behavior (by the way, the number you type has an extra zero so if you can't find a match on Google, you will know why ).
    Now, the assignment of CR steps to CR type is done in the workflow template itself and NOT in the decision table. See the first screenshot:
    The step number above "should" correspond to what is in the configuration table (for readability and consistency of documentation purposes). However, if for some reason, it does not, the hard-coded value is the value that will actually be considered. So, in technical terms, the assignment of step numbers in MDGIMG has no influence on how the workflow template will behave. Again, the main purpose is for the corresponding description in the step number configuration table to show on the CR window.
    The other thing is the step type. A step type purpose is mainly to indicate what set of buttons will show at the top of the CR window. The fact that step types are represented by numbers confuse a lot of people with step numbers. I would have personally preferred if step types were a 2-char field so that a clear distinction can be made between step types and step numbers. In any case, buttons on the CR correspond to actions and you can see in MDGIMG that you can assign step types to actions. SAP delivers a pre-defined set of step types and associated actions. Those must NOT be altered because they could break the standard workflow templates. However, you can create your own custom step types and link them with as many actions (standard or custom actions) as you like. But again, you can't assign those custom step types to hard-wired workflow templates. You can only use them in your custom workflow templates or in the rule-based workflow.
    Now, the question is how does the hard-wired workflow know what step type to use. The answer is easy: you can either find that in the SAP Help documentation or in the workflow template definition in transaction SWDD. For the above screenshot, the step type is 2. You can find that if you double-click the task ID TS75707980 (or display it using transaction PFTC) and look in the "Cntainer" tab. In this case, this task will ALWAYS have type 2. Other tasks are assigned different step types or are more dynamic in the sense that they expect the step type to be passed from the main workflow template calling them. For example TS53200002 will always have type 7, TS60808005 will always have type 5, and TS60807954 accepts the step type dynamically. This last one is the one used in the rule-based workflow (hence it has to read the step type configured in the decision table).
    I hope this answers you question. You definitely need some level of workflow design/build knowledge in order to be able to completely understand all of this. Hopefully, this gives you a good starting point.

  • How do I make Step Types in the Type palette be "master" versions which all sequence files on a particular should use? (since this only seems to "half work")

    The situation I would like is to have a library of step types which sequence developers can use. Therefore if new step types need to be added, or existing ones modified - all that needs to be done is to roll out a new MyTypes.ini (for example), and the code modules/substeps.
    Scenarios:
    If I create types in MyTypes.ini (make sure "Attach to this file" is checked, so they get saved here). I can then create a sequence file using these step types. No problem so far.
    I can open the type palette, modify the step properties, and save. When I go back to my sequence file an asterisk appears (saying it needs to be saved, even if I have opened it from scratch). The properties have been updated to reflect what is in the Type Palette. Still no problem (Type versions are the same in the sequence file and type palette).
    This is where the problem appears:
    If I change a step type (in the Type Palette) from using a code module to using a Post-Step substep instead (changing the module adaptor to "None") - any instances do NOT update when you open sequence files. (The same happens vice versa also).
    Please note that the "Type version" listed in the sequence file DOES match that listed in the Type Palette - the properties are the same but the manner in which the code modules are called is DIFFERENT! This then can lead to to runtime errors if the old code module has been deleted for example.
    The only way around this is to open EVERY sequence file that contains an instance of the step type, and make sure that you have "Apply changes to all loaded instances of this type" checked in the step type properties dialog. This is is not a good solution since files could be missed, and is very time consuming if you have hundreds of sequence files!
    What I need is that the Type Palette on any particular station contains the MASTER copies of each type. These are loaded whenever a sequence file is loaded and NOT retreived from the sequence file. As discussed above this seems to work when you modify properties - but doesnt work fine if you change the way in which code modules are called.
    Am I doing something wrong or is this a limitation?

    I had a system recently containing seven sequence files, approx 20 subsequences in each, and around 10-20 steps in each sub-sequence. Every step (except for the NI non-code module types) was an instance of a step type.
    Each one of these steps had an Edit sub-step and a code module called through the code module adapter.
    In order to make these into "wrapped up" step types it was decided to move the code module to a Post-Step substep (as also done in the NI-IVI step types) - so that developers cannot fiddle with the code prototype or module.
    In order to do this I had to open all 7 of the sequence files, make the changes and then ensure that "Apply changes in this dialog to a loaded instances" was checked. This seems to sort of work, but some steps started causing Error 17502 (System Error) when you configure them (call the Edit substep). Over the course of the past few months I have had to effectively check every instance of a type to see if it works (deleting the step and replacing it when it doesnt). Other strange things happened like some of the step type instances now have the "None" (adapter) icon associated with them - but both still work.
    The idea of creating a type-def of a step type is a good one, but frustrating that it doesnt seem to fully work. Why should the sequence file also store a version of the step-type - which is what is effectively causing this problem - why not make it so that if you dont have the step types installed in the type palette - TOUGH! Message Edited by RichM on 03-15-2005 06:55 AM

  • What do I need to set in order for each instance of the step type in the sequence to act individually?

    I'm not able to change parameters on one step without it changing the parameters on another instance of the step within the same sequence.  Is there something in the step type properties that I need to set to change this?
    For instance, I have created a custom step called "Battery PWR" that the user can insert into a sequence, hit the "edit" button, set a control in a GUI to 12V and hit an "Okay" button so that the post-step condition causes the power supply voltage to change.  Then, later in the sequence I want the user to be able to insert the same custom step, hit the edit button, set the control to 0V and hit an "Okay" button so that the post-step conditition causes the power supply to go to 0V.  The problem is, when the user edits one of the steps, it causes the other step to change to the same value.
    I know that this has a simple fix, just can't seem to find it.

    I answered my own question.  I was reading and writing to a file global instead of the step parameters, so I was basically overwriting my variables each time I edited the step.  I'm obviously a novice TestStand user.

  • Custom step type revision

    I have created several custom step types, but the names are not displayed correctly when I insert a step in a sequence. This worked fine in TS 2.0, but not in 3.0. Is there something that needs to be done with the version of the step type to be correctly recognized in TS 3.0.
    Thanks,
    Scott Trosper

    Scott -
    I am not aware of any issues like this. The version of the step type should not make a difference. Basically the Default Step Name Expression on the General tab of the Step Type Properties dialog box defines the name of the step at insert time.
    Could you append a sequence with the step type in it?
    Could you specify what you got in TS 2.x and now what you get in 3.0 for the step name when you insert a new step?
    Scott Richardson (NI)
    Scott Richardson
    National Instruments

  • Conflict between local and global step types

    I'm making some changfes in some previous programmed Step Types and I'm having conflicts. Is it posible to make global Step Types? I have some sequences that have another step type with the same name as the global and it appears the Type Conflict Dialog box. I'd like to use in all my sequences always global Step Types. Can I do this with TestStand 2.0.1?

    Hi again,
    For both Step Types A and B, I've inserted an "Edit SubStep" (inside Tab Substeps in the Step Type Properties). Those associated programs are written in LV. That means that when I insert one of my steps types in a sequence, if I click the right bottom, I have the possibility to make changes in this Edit VI and save those parameters in TestStand. I attach you the two Step Types that have the conflict, maybe you can see the problem. Have a nice weekend!
    Angel
    Attachments:
    PXI-6025E_Digital_IO.zip ‏593 KB
    Tilt_Adjustment_Service.zip ‏283 KB

  • Automatic update of Step Types

    I have developed a Step Type and I've used it in several sequences. After a time I've made some modifications on this Step Type. Now, when I open the sequences where my step type was, I don't have automatically the updated version. Is it possible to "compile" or "update" the sequences in order to avoid this problem?
    Thanks

    Angel -
    Most properties in a step type are default properties, that is the step type defines them and the instance step gets these value only when the step is first created. If you notice in the Step Type Properties dialog box most of the tabs say "default".
    If a step instance is loaded at the time you edit a step type property and you check the box at the bottom of the dialog box that says "apply to all instances", the changes to the step type will also be applied to the loaded steps. If a file is not loaded, the steps in that file will not see these changes.
    If you want to apply the step changes to the unloaded sequence files, you need to perform the above actions again while these other sequence files are loaded.
    Scott Richardson
    Scott Richardson
    National Instruments

  • Need to assign Role into step type mail in recipent type

    Hi Experts,
      I need to assign role to  for step type send mail recipent type . but in drop down there is not any role option to assign . to achive this i created organization  then position and assing job to that position then assigne to role under that job . after all in recipent type i assigned  with job . but when i execute workflow i am getting error . even i dirctally assign role to position and then assigne that position to recipent type. when executing my workflow i am getting error .
    but if a assigne user to position or job my workflow working properlay.  is there any proble to assing Role to Job or position.
    please let me know is there any  extra thing i need to take care when i assign  Role to position or Job .
    point will rewarded for right answer.

    Hello,
    Get the users assigned to the role into a container element in the previous step of 'SendMail' step and use the same as the recipient of the Sendmail step.
    This would be a better and easy option as Arghadip said.
    Hope this will help.
    Regards,
    Samson

  • How to create data type programati​cally

    Hello,
    we are writing a custom sequence editor that will generate TestStand sequence. I can populate the generated TS sequence sequence with steps using primitive arguments like Boolean, String, Number. Our test methods also use structures and I am having problem with programatically creating custom data type that matches C# struct similarly as one would do in SeqEdit.exe
    I am assuming that there is something to do with Engine.NewDataType() and create new container, but then where to add the returned PropertyObject for it to be a type in the current sequence with a name?
    Roman

    Ray, that's great. This pointed me to right direction, thank you!
    In case someone else needs this; The example worked fine from TestStand, but not from C# :
    PropertyObjectFile[] typeFiles = MyEngine.GetTypePaletteFileList();
    PropertyObjectFile typeFile = typeFiles[0];
    TypeUsageList typeList = typeFile.TypeUsageList;
    string whyNotValid = typeList.ValidateNewTypeName(name, false, out isValidName);
    if (!isValidName)
    return null;
    PropertyObject newType = MyEngine.NewPropertyObject(PropertyValueTypes.Prop​ValType_Container, false, "", 0);
    newType.NewSubProperty("MyNum", PropertyValueTypes.PropValType_Number, false, "", 0);
    newType.SetValNumber("MyNum", 0, 123.0);
    newType.NewSubProperty("MyStr", PropertyValueTypes.PropValType_String, false, "", 0);
    newType.SetValString("MyStr", 0, "AA");
    newType.Name = name;
    typeList.InsertType(newType, 0, TypeCategories.TypeCategory_CustomDataTypes);
    typeFile.IncChangeCount();
    typeFile.SaveFileIfModified(false);
    SetValNumber and SetValString threw an exception on non-existing sub-property so I added the red lines.
    There is one feature not mentioned in example - If you want to have the type in the sequence file instead of INI type files, it also works like this
     PropertyObjectFile typeFile = MySequenceFile as PropertyObjectFile;

  • The system could not find a javax.ws.rs.ext.MessageBodyWriter or a DataSourceProvider class for the com.rest.assignment.EmpBean type and application/json mediaType.  Ensure that a javax.ws.rs.ext.MessageBodyWriter exists in the JAX-RS application for the

    Hi,
    Im trying to create a Rest WS with a @GET method that will return me an Emp object. I need the output as a JSON string.
    I have created a dynamic web project and added javax RS jars:
    When im trying to run this, i'm getting the below mentioned error:
    FlushResultHa E org.apache.wink.server.internal.handlers.FlushResultHandler handleResponse The system could not find a javax.ws.rs.ext.MessageBodyWriter or a DataSourceProvider class for the com.rest.assignment.EmpBean type and application/json mediaType.  Ensure that a javax.ws.rs.ext.MessageBodyWriter exists in the JAX-RS application for the type and media type specified.
    RequestProces I org.apache.wink.server.internal.RequestProcessor logException The following error occurred during the invocation of the handlers chain: WebApplicationException (500 - Internal Server Error)
    Please help as im stuck with this from long.
    Thanks in advance.
    Below is the code for my service class:
    package com.rest.assignment;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.util.Enumeration;
    import java.util.HashSet;
    import java.util.Properties;
    import java.util.Set;
    import javax.ws.rs.GET;
    import javax.ws.rs.Path;
    import javax.ws.rs.Produces;
    import javax.ws.rs.core.Application;
    import javax.ws.rs.core.MediaType;
    import javax.ws.rs.core.Response;
    @Path("/restService")
    public class RestService extends Application {   
        @GET
        @Path("/getEmpDetails")
        @Produces(MediaType.APPLICATION_JSON)
        public Response getStringResponse()
            EmpBean empBean = new EmpBean();
            String filePath = "C:/Program Files/IBM/workspace/HelloWorld/src/com/rest/resources/EmpData.properties";
            Properties properties = new Properties();
            try {
                properties.load(new FileInputStream(filePath));
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
             Enumeration e = properties.propertyNames();
             String result="";
            String[] empDetailsArr;
            while (e.hasMoreElements()) {
              String key = (String) e.nextElement();
              String empDetails = properties.getProperty(key);
              empDetailsArr=empDetails.split(",");    
              empBean.setFirstName(empDetailsArr[0]);
              empBean.setLastName(empDetailsArr[1]);
              empBean.setEmpId(empDetailsArr[2]);
              empBean.setDesignation(empDetailsArr[3]);
              empBean.setSkillSet(empDetailsArr[4]);
              result = empDetailsArr[1];
            //return empBean;
            return Response.ok(empBean).type(MediaType.APPLICATION_JSON_TYPE).build();
        @Override
        public Set<Class<?>> getClasses() {
            Set<Class<?>> classes = new HashSet<Class<?>>();
            classes.add(RestService.class);
            classes.add(EmpBean.class);
            return classes;
    and my empBean goes like this:
    package com.rest.assignment;
    public class EmpBean {
        private String firstName;
        private String lastName;
        private String empId;
        private String designation;
        private String skillSet;
        public String getFirstName() {
            return firstName;
        public void setFirstName(String firstName) {
            this.firstName = firstName;
        public String getLastName() {
            return lastName;
        public void setLastName(String lastName) {
            this.lastName = lastName;
        public String getEmpId() {
            return empId;
        public void setEmpId(String empId) {
            this.empId = empId;
        public String getDesignation() {
            return designation;
        public void setDesignation(String designation) {
            this.designation = designation;
        public String getSkillSet() {
            return skillSet;
        public void setSkillSet(String skillSet) {
            this.skillSet = skillSet;
    Web.xml goes like this:
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app id="WebApp_ID" version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    <display-name>restWS</display-name>
    <welcome-file-list>
      <welcome-file>index.html</welcome-file>
      <welcome-file>index.htm</welcome-file>
      <welcome-file>index.jsp</welcome-file>
      <welcome-file>default.html</welcome-file>
      <welcome-file>default.htm</welcome-file>
      <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>
    <servlet>
      <servlet-name>REST</servlet-name>
      <servlet-class>com.ibm.websphere.jaxrs.server.IBMRestServlet</servlet-class>
      <init-param>
       <param-name>javax.ws.rs.Application</param-name>
       <param-value>com.rest.assignment.RestService</param-value>
      </init-param>
      <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
      <servlet-name>REST</servlet-name>
      <url-pattern>/rest/*</url-pattern>
    </servlet-mapping>
    </web-app>
    When i try to return a string from my get method, it gives me a proper response. i get this exception when im trying to return a JSON response.

    Hi,
    Im trying to create a Rest WS with a @GET method that will return me an Emp object. I need the output as a JSON string.
    I have created a dynamic web project and added javax RS jars:
    When im trying to run this, i'm getting the below mentioned error:
    FlushResultHa E org.apache.wink.server.internal.handlers.FlushResultHandler handleResponse The system could not find a javax.ws.rs.ext.MessageBodyWriter or a DataSourceProvider class for the com.rest.assignment.EmpBean type and application/json mediaType.  Ensure that a javax.ws.rs.ext.MessageBodyWriter exists in the JAX-RS application for the type and media type specified.
    RequestProces I org.apache.wink.server.internal.RequestProcessor logException The following error occurred during the invocation of the handlers chain: WebApplicationException (500 - Internal Server Error)
    Please help as im stuck with this from long.
    Thanks in advance.
    Below is the code for my service class:
    package com.rest.assignment;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.util.Enumeration;
    import java.util.HashSet;
    import java.util.Properties;
    import java.util.Set;
    import javax.ws.rs.GET;
    import javax.ws.rs.Path;
    import javax.ws.rs.Produces;
    import javax.ws.rs.core.Application;
    import javax.ws.rs.core.MediaType;
    import javax.ws.rs.core.Response;
    @Path("/restService")
    public class RestService extends Application {   
        @GET
        @Path("/getEmpDetails")
        @Produces(MediaType.APPLICATION_JSON)
        public Response getStringResponse()
            EmpBean empBean = new EmpBean();
            String filePath = "C:/Program Files/IBM/workspace/HelloWorld/src/com/rest/resources/EmpData.properties";
            Properties properties = new Properties();
            try {
                properties.load(new FileInputStream(filePath));
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
             Enumeration e = properties.propertyNames();
             String result="";
            String[] empDetailsArr;
            while (e.hasMoreElements()) {
              String key = (String) e.nextElement();
              String empDetails = properties.getProperty(key);
              empDetailsArr=empDetails.split(",");    
              empBean.setFirstName(empDetailsArr[0]);
              empBean.setLastName(empDetailsArr[1]);
              empBean.setEmpId(empDetailsArr[2]);
              empBean.setDesignation(empDetailsArr[3]);
              empBean.setSkillSet(empDetailsArr[4]);
              result = empDetailsArr[1];
            //return empBean;
            return Response.ok(empBean).type(MediaType.APPLICATION_JSON_TYPE).build();
        @Override
        public Set<Class<?>> getClasses() {
            Set<Class<?>> classes = new HashSet<Class<?>>();
            classes.add(RestService.class);
            classes.add(EmpBean.class);
            return classes;
    and my empBean goes like this:
    package com.rest.assignment;
    public class EmpBean {
        private String firstName;
        private String lastName;
        private String empId;
        private String designation;
        private String skillSet;
        public String getFirstName() {
            return firstName;
        public void setFirstName(String firstName) {
            this.firstName = firstName;
        public String getLastName() {
            return lastName;
        public void setLastName(String lastName) {
            this.lastName = lastName;
        public String getEmpId() {
            return empId;
        public void setEmpId(String empId) {
            this.empId = empId;
        public String getDesignation() {
            return designation;
        public void setDesignation(String designation) {
            this.designation = designation;
        public String getSkillSet() {
            return skillSet;
        public void setSkillSet(String skillSet) {
            this.skillSet = skillSet;
    Web.xml goes like this:
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app id="WebApp_ID" version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    <display-name>restWS</display-name>
    <welcome-file-list>
      <welcome-file>index.html</welcome-file>
      <welcome-file>index.htm</welcome-file>
      <welcome-file>index.jsp</welcome-file>
      <welcome-file>default.html</welcome-file>
      <welcome-file>default.htm</welcome-file>
      <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>
    <servlet>
      <servlet-name>REST</servlet-name>
      <servlet-class>com.ibm.websphere.jaxrs.server.IBMRestServlet</servlet-class>
      <init-param>
       <param-name>javax.ws.rs.Application</param-name>
       <param-value>com.rest.assignment.RestService</param-value>
      </init-param>
      <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
      <servlet-name>REST</servlet-name>
      <url-pattern>/rest/*</url-pattern>
    </servlet-mapping>
    </web-app>
    When i try to return a string from my get method, it gives me a proper response. i get this exception when im trying to return a JSON response.

  • Data Acquisition Step Type

    Hi, is there a step type to perform Data Acquisition and Basic comm control such as RS232 and GPIB within teststand ?
    This question was raised when I was training one of our Technicians today, he asked/suggested that having a step type which performs Data Acquisition and comm control would reduce there development time down dramatically, They have just started to use Teststand on small cycle test rigs as part of an evaluation stage. They have no experience with LabVIEW or CVI, they basically want a quick  and easy way to produce a test sequence with Data Acquisition and comm control.
    if there is anything like this at the moment can you possibly reply. If there is not,  is this a something which will be avaible in the future ?
    Message Edited by ds1638 on 12-09-2008 02:44 PM

    Data Acquisition usually refers to a DAQ board from NI so I think what you are looking for is a generic NI-VISA step type and a specific RS-232 step type. I have a NI-VISA step type that was originally written with LabVIEW 6.1 and for use with TestStand 2. I've atached that below. I don't have the .ini file handy and don't have time to recreate it but from the code, you should be able to see what needs to be added to the step properties. The basic step is a modified Pass/Fail Step.
    It's not that difficult to create your own custom steps. I've done a lot and it only takes a little while longer than doing a code module in LabVIEW or CVI. The extra time is in creating the edit step.
    I've got an RS-232 step type but part of it is product specific so it is proprietary and I can't post that. Look at the VISA example and the other examples of custom step types that are on the developer zone and see how far you get.
    Attachments:
    VISA IO.zip ‏188 KB

  • Creating a step type "launcher" that would insert the appropriate built-in or custom step type at edit time

    Hi everybody,
    I'm looking for tips, pointers,directions... to be able to perform this operation in TS 4.0 sequence Editor, if it's even possible...
    I'm managing a test system with a "home-made" virtual instruments abstraction Layer complementary to IVI classes for instruments which do not have classes defined, customizing the sequence editor accordingly for developpers of my department.
    So basically when the instrument is IVI, the developper uses the built-in IVI step-type type and when it is not, he uses the the custom step types that I developped for this particular class of instruments.  
    However there are classes where I do have both IVI and specific drivers available and I do need to use both in the test sequence.
    For example let's say there are two sources of DC power available in the testbench, one being a programmable IVI compliant DC power supply, and the other one composed of fixed "blocks" of DC power supply managed by externals relays and you need to use them both in the test sequence.
    What I would like to be able to do in the sequence editor is inserting the appropriate step type at edit time just by selecting the source of power supply (by a ring or enum for eg), and if the first ressource is selected, it inserts IVI step type, and if the second ressource is chosen, it inserts the appropriate custom step type.
    Any Ideas on how to accomplish this ?
    Regards,
    Cyril
    Cyril Bouton
    Active LabVIEW Developper
    Solved!
    Go to Solution.

    Hello Cyril,
    Here is an idea that could be done:
    You could create a dynamic step by having a step that holds all the properties for both configurations (the superset of the necessary variables) and an extra one that indicates which 'mode' the step is in.  Then you create the main Edit substep in whichever language you desire.  That substep window will then have a box/dropdown/etc. at the top you can use to choose between modes A & B.  When the user changes the value, you would dynamically change the rest of the window to contain the appropriate properties for mode A or B.  You then copy the property values in that window to the Step properties, and copy the mode to your variable and you can run the step in that mode.  When the step then runs, it checks the mode variable, and depending on its value, it will run the step in mode A or B.
    Now we could add a dialog that allows us to choose when we put a step down but we should still allow the user to change later via the Edit substep we create.
    I don't think we can create something that inserts a completely different step, but we can have one step that has the ability to do both and we can pick which one we execute.  Also note we still don't have the ability to edit the Panels for a step, so we have to use a new window that we call from our Edit substep to complete the step.
    Hope this helps.
    Regards,
    Olivier L. | Certified LabVIEW Developer

  • Can you filter results by step type?

    Hello all,
    I was wondering if it's possible to filter report results by the step type.
    I currenly have it filtered as Result.Status == "Passed" || Result.Status == "Failed. This is fine, except I would like the user to be able to select whether or not a certain step type will report this.
    I have far too many of these step types to go to the Run Options tab in properties for each and turn off 'record results' each time I run the test.
    Lets say I have 10 subsequences (Call Sequence Type) and each of them has 10 PassFail Tests. If I only want the result of each subsequence (whether the whole sequence passed or failed) instead of what each individual PassFail test's results are, how can I do this without messing with the RunOpt
    ions tab for each PassFail test.
    Hope this makes sense.
    Thanks in advance,
    Dave Neumann
    [email protected]

    Hi Sam,
    You can enter that expression in the Report Options.  Go to Configure >> Report Options and near the top will be a Result Filtering Expression, where you can enter that expression in.
    Let me know if you have any questions.
    Thanks,
    Terry S.
    Staff Software Engineer
    National Instruments

Maybe you are looking for